在docker-compose命令之前执行mvn全新安装

时间:2019-11-28 09:02:37

标签: maven spring-boot docker compilation docker-compose

我正在docker容器中运行多个spring-boot微服务。 我正在编写docker-compose.yml文件以自动进行部署,但是我遇到了问题。 所有的spring-boot微服务都具有不同的配置文件,具体取决于您是否要在没有docker的情况下在本地运行它们,以及另一个想要通过docker运行它们的ig(基本上每个配置文件都会更改微服务之间的客户端URls)。

如果我运行docker-compose up,并且未使用“ docker” spring-boot配置文件编译已编译的jar文件,则会使用错误的jar创建映像。

我的DOCKER-COMPOSE.YML示例:

version: "3"

services:
  imageserver:
    build:
      context: ./ImageServer
      dockerfile: Dockerfile
    ports:
      - 8081:8081
    networks:
      - my-private-network
  core:
    build:
      context: ./Core
      dockerfile: Dockerfile
    ports:
      - 8082:8082
    networks:
      - my-private-network

networks:
  my-private-network:
  my-public-network

我的文档档案示例之一:

FROM openjdk:8-jdk-alpine
LABEL maintainer="lalala@gmail.com"
VOLUME /tmp
EXPOSE 8082
COPY ./target/*.jar Core.jar
ENTRYPOINT ["java","-jar","/Core.jar"]

在运行docker-compose之前,是否可以在每个目录中执行类似“ mvn clean install -P docker”的命令,以确保将使用正确的配置文件编译映像中包含的jar? 在将容器弄平之前(在容器外才能使将包含在容器中的罐子而不是容器内),必须激发命令。

谢谢

2 个答案:

答案 0 :(得分:1)

您必须能够在Dockerfile上使用RUN,并提供maven clean install。但是为什么要这么做呢?将Docker构建集成到您的Maven中,并在您要配置图像的配置文件中进行配置。 Refer here

答案 1 :(得分:0)

我找到了更好的解决方案! http://www.littlebigextra.com/use-spring-profiles-docker-containers/

我可以在不使用配置文件的情况下进行编译,但是随后我可以使用java -jar选择spring配置文件!

感谢您的评论和回复!