web-dev-qa-db-ja.com

環境変数をDOCKER Spring Bootに渡す

SpringBootアプリケーションがあり、そのDockerfileは次のとおりです。 local/dev/qa/prodなどのさまざまな環境用のapplication.propertiesがあります。 IDEでアプリケーションをローカルで実行するとき、-Dspring.profiles.active = local in VM optionsを渡してapplication-local.propertiesをロードします。 Dockerコンテナとして実行して、すべてのapplication.propertiesで構成されるイメージを作成します(つまり、すべての環境で唯一の同じdockerイメージです)。

環境でイメージを実行するとき、何らかの方法で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" ]
8
deejo

.Dockerfileファイル内:

ENTRYPOINT [ "sh", "-c", "Java -Dspring.profiles.active=**${ENV}** -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

そして、ドッカーの実行中:

docker run --env ENV=*local* -d -p 8080:8080 <*image id*>

このようにして、環境変数は値としてローカルになり、コンテナーを起動するときにDockerfileに渡されます。

更新

あなたも好きなことができます

ENTRYPOINT ["Java","-jar", "-Dspring.profiles.active=${ENV} -Djava.security.egd=file:/dev/./urandom","app.jar"]

そして、ドッカーの画像

docker run --env ENV=local -d -p 8080:8080 <*image id*>
3
deejo

Dockerコンテナの環境変数を使用して行う最も簡単な(おそらくおそらく最良の方法):

SPRING_PROFILES_ACTIVE=dev,swagger

更新:

環境変数をdockerに設定するために、Dockerfileを変更する必要はありません。 Dockerイメージをビルドしてから、env変数を設定して実行します。

docker run your-docker-container -e SPRING_PROFILES_ACTIVE='dev,swagger' -p 8080:8080
6
Danylo Zatorsky