0

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}
4

0 に答える 0