第二个docker-compose文件新增服务为孤儿容器且不在docker-compose ps输出显示
问题原因
你在启动服务时指定了-f docker-compose.yml -f docker-compose.prod.yml两个配置文件合并执行,但后续执行docker-compose ps、docker-compose down等命令时,没有携带相同的-f参数组合。
docker-compose默认只会读取当前目录下的docker-compose.yml和可选的docker-compose.override.yml作为有效配置。你的nginx服务仅在docker-compose.prod.yml中定义,不指定该文件的情况下,docker-compose无法识别该服务属于当前项目,因此不会在ps结果中展示,还会把已经运行的nginx容器判定为孤儿容器,在执行down命令时给出警告。
解决方法
所有操作该生产环境的docker-compose命令,都需要携带完整的配置文件参数:
- 查看服务状态:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml ps
- 停止并删除服务:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml down
如果觉得每次输入参数过于繁琐,可以通过COMPOSE_FILE环境变量指定配置文件列表:
# 仅当前终端窗口生效 export COMPOSE_FILE=docker-compose.yml:docker-compose.prod.yml # 配置完成后可直接执行常规docker-compose命令 docker-compose ps docker-compose down
内容的提问来源于stack exchange,提问作者Chris Gibb
相关产品推荐
相关产品推荐

