我正在尝试使用Docker,Kubernetes和Jenkins为我的项目实现CI / CD管道。我的应用程序是多租户应用程序,其中数据库应用程序变量对于不同的租户来说都是不同的。
应用策略
在构建Docker映像时,我正在使用Dockerfile。然后将Dockerfile保留在SVN代码存储库中。对于每个租户,代码存储库都是相同的。在构建映像时,那时我需要为不同的租户构建不同的映像。
Dockerfile实现
在我的docker文件中,我添加了如下入口点,
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}
然后在部署期间设置正确的环境。