我可以在docker-compose.yml中限制一个依赖项,只用于本地配置文件吗?

z31licg0  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(103)

对于本地开发,我连接到在虚拟机中的docker容器中运行的SQL服务器。然而,对于dev,我连接到Azure服务器。问题是,在我的docker-compose.yml中,对于本地开发,我有一些依赖于sql-server的服务,当我想部署到dev时,我需要从我的Docker compose中删除SQL服务器服务,然后我需要删除与它相关的依赖项,因为我不再需要它了,因为我正在连接到Azure。有什么方法可以限制dependency(depends_on)仅用于本地配置文件吗?
这是我想要的,但对我来说听起来像是某种条件:

sql-server:
    image: x
    environment: x
    pw: x
    ports: x
    healthcheck: x
    profiles: -local
  dependant-service:
    depends_on: sql-server ONLY when profiles: - local else it doesn't depend

字符串
解决方案,我目前只是复制,并有本地的东西和HTTPS的东西。然而,这看起来不是很好,它不是很有效。

mec1mxoz

mec1mxoz1#

在Docker Compose中,您可以利用profiles属性来定义哪些服务应该在哪个配置文件下启动。对于您的用例,您可以为sql-server和任何其他只应该在本地运行的服务定义local配置文件。然后,当您部署到开发时,您不会激活local配置文件,这些服务将不会启动或依赖。
在地方发展方面:

docker-compose --profile local up

字符串
当您部署到不需要sql-server服务的开发环境时,只需省略--profile local选项:

docker-compose up


这种方法将允许您在不同的环境中使用不同的配置,而无需复制大量内容,并允许在docker-compose.yml文件中清晰地分离关注点。

相关问题