【发布时间】:2021-08-31 06:54:51
【问题描述】:
我想要我的:
spring.datasource.url = jdbc:mysql://666.666.666.666/prod_very_wow
改成:
spring.datasource.url = jdbc:mysql://666.666.666.666/dev_very_wow
根据我目前所在的分支。我想我也应该在 Dockerfile 中指定它 - 我应该在 docker 的 RUN 旁边添加一个属性,该属性应该确定应该激活哪个数据源。
也就是说,当我在 master 分支上时,我希望我的应用程序连接到 prod_very_wow 和 dev_very_wow 每次我签出到 dev 或创建新功能分支时,它都由添加到 RUN mvn 包中的属性决定Dockerfile。
如果这个问题没有意义,我深表歉意,但坦率地说 - 我有点不知道如何问这个问题,所以我在谷歌上搜索答案时遇到了麻烦。 我刚刚找到了一些关于“环境变量”的线索,但是我在连接的数据源和我当前所在的分支之间找不到任何连接。
【问题讨论】:
-
我不建议将数据库 URL 或名称直接包含在您的源代码树中,尤其是不要包含在 Dockerfile 中。我昨天写了an answer,讨论了如何使用环境变量在 Docker Compose 上下文中设置 Spring 数据库 URL。
-
谢谢。我已经调查过了,但我不确定我是否正确理解了 Docker Compose 的用法。我目前在项目中没有一个。它的功能类似于 Dockerfiles 的管理器吗?
-
是的。如果您通常要
docker build一个或两个自定义图像,docker network create和docker volume create,然后是docker run一些容器,Compose 会为您管理这一系列步骤。 -
感谢您的时间和信息。在这种情况下,我将研究 Docker Compose 的主题。尽管目前我已经使用了 Spring Profiles(两个 application.properties 文件)、两个 Dockerfiles(每个都使用 CMD 来运行某个配置文件 - 其中一个具有 --spring.profiles.active=prod)和两个 Jenkinsfiles 来匹配。所以现在管道接收到要运行的正确 Jenkins 文件的名称。我认为 Docker Compose 的使用会使其更加优化?
标签: java mysql spring docker branch