2

私はSpringBootアプリケーションを持っていて、そのDockerfileは次のとおりです。私はlocal/dev/qa/prodのような異なる環境のためにapplication.propertiesを持っています。アプリケーションをIDEでローカルに実行すると、VMオプションに-Dspring.profiles.active = localが渡され、application-local.propertiesがロードされます。ドッカーコンテナーとして動作するために、私はすべてのapplication.propertiesからなるイメージを構築します。つまり、すべての環境で同じDockerイメージのみです。env変数をDOCKERに渡すSpring Boot

イメージを環境で実行すると、どうにかしてSpringBootにそのdev envを理解させたいので、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で

、 ENTRYPOINT [ "SH"、 "-c"、「javaの-Dspring.profiles.active = $ { ENV} -Djava.security.egd =ファイル:は/ dev /./ urandomの-jar /app.jar」]

とドッキングウィンドウを実行している間、 ドッキングウィンドウの実行--env ENVは、= ローカル -d - p8080:8080 < image 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

私の回答を更新しました –

関連する問題