私は、Docker、Kubernetes、およびJenkinsを使用して、プロジェクトのCI / CDパイプラインを実装しようとしています。私のアプリケーションはマルチテナントアプリケーションで、データベースアプリケーションの変数はすべて、テナントごとに異なります。
アプリケーション戦略
Dockerイメージを構築するときは、Dockerfileを使用しています。そして、DockerfileをSVNコードリポジトリ内に保持します。すべてのテナントで、コードリポジトリは同じです。イメージを構築するときは、その時点で、テナントごとに異なるイメージを構築する必要があります。
Dockerfileの実装
私のドッカーファイルに次のようなエントリポイントを追加しています、
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
別のテナントのDockerイメージを構築する必要がある場合は、追加する必要があります
-Dspring.profiles.active=tenant2config
したがって、Dockerfileのエントリポイントは動的です。
私の混乱
- 動的にDockerfile内のエントリポイントコマンドを管理することは可能ですか?
- または、別のテナント用に別のDockerfileを追加する必要がありますか?また、別のテナントに対してdocker buildコマンドを個別に実行する必要がありますか?
この問題の標準的な実装方法を見つけるにはどうすればよいですか?
ENTRYPOINT
ieで環境変数を使用して、... -Dspring.profiles.active=${TENANT}
デプロイメント中に正しい環境を設定できます。