我有一個包含以下Dockerfile內容的 docker 鏡像:
FROM openjdk:8
ENV MYHOME /home/docker
ARG JAR_FILE
ENV JAR ${JAR_FILE}
COPY $JAR_FILE ${MYHOME}/$JAR_FILE
WORKDIR ${MYHOME}
ENTRYPOINT ["sh", "-c", "java -jar ${MYHOME}/${JAR} --spring.profiles.active=docker,foo"]
當我嘗試將此 docker 影像與其他影像一起包含在 docker compose 檔案中時,我想覆寫 Spring 活動組態檔。
我嘗試使用以下docker-compose.yml內容:
...
my_image:
image: my_image
environment:
SPRING_PROFILES_ACTIVE: 'docker,bar'
...
但是當使用上述配置運行 docker compose 并查看容器日志時,我發現活動組態檔是:
...
The following profiles are active: docker,foo
...
就我而言,如何使用 docker compose設定docker、bar組態檔?
uj5u.com熱心網友回復:
正如@daniu 在評論中所說,--spring.profiles.active命令列選項優先于SPRING_PROFILES_ACTIVE環境變數。Spring Boot 檔案中的 [Externalized Configuration] 中描述了實際的優先級串列。
另一方面,docker run -e選項將優先于影像中設定的環境變數。因此,如果您ENV SPRING_PROFILES_ACTIVE=...在影像中設定,該docker run -e選項將按預期作業;不要在應用程式啟動中包含命令列選項。
ENV SPRING_PROFILES_ACTIVE=docker,foo
CMD ["java", "-jar", "/app/myapp.jar"] # without --spring.profiles.active option
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/466492.html
