以下是我的docker-compose.yml文件的内容:
eureka-server:
image: controlsplm/eureka-server
environment:
HOST_IP: X.X.X.X
ACTIVE_PROFILE=docker-development-cloud
ports:
- "8761:8761"
restart: always
以下是我的泊坞文件的内容:
FROM java:8
VOLUME /tmp
ADD eureka-server-0.1.0-SNAPSHOT.jar app.jar
EXPOSE 8761
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Denvironment=$HOST_IP","-Dspring.profiles.active=$ACTIVE_PROFILE","-jar","/app.jar"]
但是当我使用compose运行docker容器时,HOST_IP被选中但不是ACTIVE_PROFILE。我错过了什么?请帮助...
答案 0 :(得分:1)
我看到两个问题:
ACTIVE_PROFILE
的格式错误,@ andreas-jägle在评论中提到的ACTIVE_PROFILE: docker-development-cloud
入口点使用json数组表示法,这意味着该命令在没有shell的情况下直接执行。 shell(通常是bash
)是用它们的值替换变量的,所以你需要在shell中运行才能使用这些变量。您可以使用ENTRYPOINT
的字符串形式,也可以使用:
ENTRYPOINT ["bash", "-c" ,"java - Dspring.profiles.active=$ACTIVE_PROFILE ..."]
答案 1 :(得分:1)
实际上,如果您具有Spring属性
my.spring.property.one = green
my.spring.property.two = blue
您可以按如下所示将它们包括在docker-compose.yml中:
environment:
- my_spring_property_one = green
- my_spring_property_two = blue
为
为我工作答案 2 :(得分:0)
我通过在docker-compose.yml文件中添加以下行来解决了这个问题:
eureka-server:
image: controlsplm/eureka-server:latest
environment:
HOST_IP: X.X.X.X
SPRING_PROFILES_ACTIVE: docker-development-cloud
ports:
- "8761:8761"
restart: always
以及dockerfile中的以下行:
FROM java:8
VOLUME /tmp
ADD eureka-server-0.1.0-SNAPSHOT.jar app.jar
EXPOSE 8761
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Denvironment=$HOST_IP","-jar","/app.jar"]