DockerCompose警告Found orphan containers有孤立容器

2022年3月25日 853点热度
现象:如果一个文件夹中有多个.yml文件,那么每次运行其中一个yml就会出现警告有相同项目的其他孤立容器,这是因为Docker机制把文件夹名称作为默认项目名称,一个项目名称被多个yml文件使用就会发生这个警告:
WARNING: Found orphan containers (ngrok, nps) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
frps is up-to-date
虽然终端提示使用 --remove-orphans 去修复错误,但是这样的话其他容器会被删除,明显不是我们要的答案。

解决方法1:-p自定义project项目名称:
docker-compose -p hello-02 -f frps.yml up -d

解决方法2:使用.env配置默认环境变量参数COMPOSE_PROJECT_NAME:
在"frps.yml"同级目录创建环境变量文件".env" #注意此文件不能有文件名只需.env后缀。
缺点:只能调用.env文件,自定义"docker.env"文件不生效。因此还是无法适用一个文件夹下多个yml的情况。
#.env文件
COMPOSE_PROJECT_NAME=hello-02
#frps.yml文件,有效配置:
version: '3.7'
services:
  frps:
    env_file: #不用申明环境变量文件地址也可以,COMPOSE_PROJECT_NAME这个参数强制调用同级目录.env文件。
      - ./.env
    environment: 
      COMPOSE_PROJECT_NAME: 
    image: snowdreamtech/frps
错误配置示范:
#frps.yml文件,无效配置:
version: '3.7'
services:
  frps:
    env_file: 
      - ./docker.env #使用自定义文件名的docker.env变量文件是无效的。
    environment: 
      COMPOSE_PROJECT_NAME: 
    image: snowdreamtech/frps
#frps.yml文件,无效配置:
version: '3.7'
services:
  frps:
    environment: 
      COMPOSE_PROJECT_NAME: hello-02 ##配置中直接申明变量是无效的:
    image: snowdreamtech/frps
    container_name: frps

SSJ

不积跬步无以至千里