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

这里是 Dockerfiles:

信用.Dockerfile:

FROM adoptopenjdk/openjdk8:ubi
ADD credit/target/credit-ChocoladeIcecream.jar .
CMD java -jar credit/credit-ChocoladeIcecream.jar

客户端.Dockerfile:

FROM adoptopenjdk/openjdk8:ubi
ADD client/target/client-ChocoladeIcecream.jar .
CMD java -jar client/client-ChocoladeIcecream.jar

product.Docker 文件:

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