Dockerfile を使用してアプリケーションを構築する際に問題があります。
シンプルな dockerfiles を使用しました。jdk だけで開始し、コンソール コマンドでプロジェクトを構築すると、正常に動作します。
しかし、dockerfile で maven を使用してビルドしようとすると失敗し、maven の外部でアプリケーションをビルドせずにそれを行う方法がわかりません。
Dockerfile を準備するにはどうすればよいですか?
アプリケーションの構造は次のとおりです。
create-credit(Parent)
|
|-------> credit(Child) - port 8089 credit app
|
|-------> client(Child) - port 8090 - client app
|
|-------> product(Child) - port 8091 - product app
アプリケーション用のデータベースを作成するために、docker-compose で実行します。
mvn clean install -Dmaven.test.skip=true
docker-compose up
Dockerfile は次のとおりです。
credit.Dockerfile:
FROM adoptopenjdk/openjdk8:ubi
ADD credit/target/credit-ChocoladeIcecream.jar .
CMD java -jar credit/credit-ChocoladeIcecream.jar
client.Dockerfile:
FROM adoptopenjdk/openjdk8:ubi
ADD client/target/client-ChocoladeIcecream.jar .
CMD java -jar client/client-ChocoladeIcecream.jar
product.Dockerfile:
FROM adoptopenjdk/openjdk8:ubi
ADD product/target/product-ChocoladeIcecream.jar .
CMD java -jar product/product-ChocoladeIcecream.jar
および docker-compose.yml ファイル:
version: '3.9'
services:
credit_app:
image: 'credit:latest'
build:
context: ./
dockerfile: credit.Dockerfile
container_name: credit
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/${POSTGRES_DB}
- SPRING_DATASOURCE_USERNAME=${POSTGRES_USER}
- SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD}
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
- CREDIT_PORT=${PORT1}
- CLIENT_PORT=${PORT2}
- PRODUCT_PORT=${PORT3}
ports:
- ${PORT1}:${PORT1}
client_app:
image: 'client:latest'
build:
context: ./
dockerfile: client.Dockerfile
container_name: client
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/${POSTGRES_DB}
- SPRING_DATASOURCE_USERNAME=${POSTGRES_USER}
- SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD}
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
- CREDIT_PORT=${PORT1}
- CLIENT_PORT=${PORT2}
ports:
- ${PORT2}:${PORT2}
product_app:
image: 'product:latest'
build:
context: ./
dockerfile: product.Dockerfile
container_name: product
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/${POSTGRES_DB}
- SPRING_DATASOURCE_USERNAME=${POSTGRES_USER}
- SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD}
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
- PRODUCT_PORT=${PORT3}
- CREDIT_PORT=${PORT1}
ports:
- ${PORT3}:${PORT3}
db:
image: 'postgres:13.1-alpine'
container_name: db
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}