我正在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? 在将容器弄平之前(在容器外才能使将包含在容器中的罐子而不是容器内),必须激发命令。
谢谢
答案 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配置文件!
感谢您的评论和回复!