docker-compose - 如何将容器设置为无操作容器?

3

我有一个docker-compose.yml文件,其中定义了一个Web服务和一个数据库。

这个文件描述了我的主要用例,可以通过docker-compose up启动。

docker-compose.yml

version: '3.7'
services:
  webservice:
    image: my-webservice
    ports:
    - published: 8080
      target: 8080
  db-container:
    image: my-database
    ports:
      - '3306:3306'

我有一个备选方案,可以将Web服务连接到现有数据库。

使用以下命令启动备选配置:docker-compose -f docker-compose.yml -f use-existing-db.yml up

use-existing-db.yml

version: '3.7'
services:
  webservice:
    volumes:
    - /some/dir/db.prop:/config/db.prop

我的问题

在我上面描述的场景中,db-container不需要启动。

我知道我可以创建一个单独的docker-compose文件,只启动Web服务。我想找到一种覆盖主docker-compose文件的解决方案。

有没有一个好的实践方法,通过docker-compose将特定的容器变成无操作容器?我认为我只需引用不同的镜像名称即可。


备用配置有什么作用?use-existing-db.yml中的Web服务如何连接到现有数据库?是哪个数据库?是外部的,不是容器化的吗? - rok
use-existing-db.yml 使用外部的、非容器化数据库。通过 db.prop 传递该数据库的 URL。 - terrywb
1个回答

2
过去我使用过的一种解决方案是明确声明你想要启动的服务子集。 docker-compose -f docker-compose.yml -f use-existing-db.yml up webservice 如果webservice依赖于db-container,你可以这样做: docker-compose -f docker-compose.yml -f use-existing-db.yml up --no-deps webservice

谢谢。知道可以有选择地为特定的容器调用up命令是很有帮助的。 - terrywb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接