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" ]
.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*>
Dockerコンテナの環境変数を使用して行う最も簡単な(おそらくおそらく最良の方法):
SPRING_PROFILES_ACTIVE=dev,swagger
更新:
環境変数をdockerに設定するために、Dockerfileを変更する必要はありません。 Dockerイメージをビルドしてから、env変数を設定して実行します。
docker run your-docker-container -e SPRING_PROFILES_ACTIVE='dev,swagger' -p 8080:8080