2017-10-12 61 views
2

我有一個SpringBoot應用程序及其Dockerfile如下。我有不同的環境,如本地/ dev/qa/prod的application.properties。當我在IDE本地運行應用程序,我通過-Dspring.profiles.active =本地在VM選項,以便它加載application-local.properties。爲了作爲碼頭容器運行,我構建了一個包含所有application.properties的圖像。即它僅適用於所有環境的同一個泊塢窗圖像。傳遞ENV變量來塢窗春引導

當我運行的環境中的形象,我想以某種方式使SpringBoot瞭解其開發包膜,所以它必須加載application-dev.properties。我正在使用AWS ECS來管理容器。

FROM openjdk:8-jdk-alpine 
VOLUME /tmp 
ADD target/sample-test-sb-sample-app-1.0-exec.jar app.jar 
EXPOSE 8080 
ENV JAVA_OPTS="" 
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

回答

0

在Dockerfile, 入口點[ 「SH」, 「-c」,「Java的-Dspring.profiles.active = $ { ENV} -Djava.security.egd =文件是:/ dev /./ urandom的罐子/app.jar」]

,當運行碼頭工人,碼頭工人 運行--env ENV = 當地 -d - p 8080:8080 < 圖像ID>

這樣,當我們調出一個容器時,環境變量獲取本地值作爲值並傳遞給Dockerfile。

0

最簡單的(也可能是最好的方式)通過環境變量做一個搬運工容器:

UPDATE:

爲了設置環境變量來泊塢窗,你不需要修改Dockerfile。簡單的建造碼頭工人的圖像,然後與設定的ENV變量運行:

docker run your-docker-container -e SPRING_PROFILES_ACTIVE='dev,swagger' -p 8080:8080 
+0

能否請你解釋一下?我是Docker的新手。這個環境變量應該在哪裏以及它應該何時注入Dockerfile?謝謝! – deejo

+0

已更新我的答案 –