【发布时间】:2019-10-21 09:53:31
【问题描述】:
我正在尝试使用 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中使用环境变量,即... -Dspring.profiles.active=${TENANT},然后在部署期间设置正确的环境。
标签: docker dockerfile