码头工人撰写孤儿容器警告

新手上路,请多包涵

当您有 2 个独立项目并且您希望它们同时工作或至少构建运行时如何使用孤儿图像 docker-compose up -d 没有 --remove-orphans 已构建图像时的标志另一个项目。

码头工人撰写文件1:

 version: '2'
services:
  applications:
    image: tianon/true
    volumes:
      - ../../:/var/www/vhosts/project1
  nginx:
    build: ./images/nginx
    image: project1/nginx:latest
    ports:
      - "80:80"
    volumes_from:
      -  applications
    networks:
      appnet:
        aliases:
          - project1.app
          - admin.project1.app
  php:
    image: project1/php:latest
    ports:
      - "7778:7778"
    build:
      context: ./images/php
      dockerfile: Dockerfile
    volumes_from:
      -  applications
    networks:
      -  appnet
  mysql:
    image: project1/mysql:latest
    build: ./images/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      -  mysqldata:/var/lib/mysql
    networks:
      -  appnet
    ports:
      - "33066:3306"
 workspace:
    image: project1/workspace:latest
    build:
      context: ./images/workspace
    volumes_from:
      - applications
    working_dir: /var/www/vhosts/project1
    networks:
      -  appnet
networks:
  appnet:
    driver: "bridge"
volumes:
   mysqldata:
    driver: "local"

第二个 docker compose 文件:

 version: '2'
services:
  project2_applications:
    image: tianon/true
    volumes:
      - ../../:/var/www/vhosts/project2
  project2_nginx:
    build: ./images/nginx
    image: project2/nginx:latest
    ports:
      - "8080:80"
    volumes_from:
      -  project2_applications
    networks:
      project2_appnet:
        aliases:
          - project2.app
          - admin.project2.app
  project2_php:
    image: project2/php:latest
    ports:
      - "7777:7777"
    build:
      context: ./images/php
      dockerfile: Dockerfile
    volumes_from:
      -  project2_applications
    networks:
      -  project2_appnet
  project2_mysql:
    image: project2/mysql:latest
    build: ./images/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      -  project2_mysqldata:/var/lib/mysql
    networks:
      -  project2_appnet
    ports:
      - "33067:3306"
  project2_workspace:
    image: project2/workspace:latest
    build:
      context: ./images/workspace
    volumes_from:
      - project2_applications
    working_dir: /var/www/vhosts/videosite
    networks:
      -  project2_appnet
networks:
  project2_appnet:
    driver: "bridge"
volumes:
   project2_mysqldata:
    driver: "local"

现在,当我已经构建了 project1 并尝试为第二个项目运行 docker-compose up -d 时,我看到了警告:

警告:为该项目找到孤立容器(docker_workspace_1、docker_nginx_1、docker_php_1、docker_mysql_1、docker_memcached_1)。如果您在 compose 文件中删除或重命名了此服务,则可以使用 --remove-orphans 标志运行此命令来清理它。

我推测这是因为 project1 的容器名称应该更具体,我需要添加一些前缀,就像我为 project2 所做的那样,但 project1 已被许多其他开发人员使用,我不想更改它。

有没有办法关闭孤儿检查?

第二件事:只是一条警告消息,但由于某种原因,在它出现后 compose 失败并出现错误:

错误:启动项目时遇到错误。

为了让它工作,我需要运行 docker-compose up -d --remove-orphans

原文由 Bogdan Dubyk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

Compose 在内部使用 _项目名称_(默认为项目目录的基本名称)来隔离项目。项目名称用于为所有项目的容器和其他资源创建唯一标识符。 For example, if your project name is myapp and it includes two services db and web , then Compose starts containers named myapp_db_1 and myapp_web_1 分别。

您会收到 "Found orphan containers" 警告,因为 docker-compose 检测到一些容器属于另一个 同名 项目。

为了防止不同的项目相互干扰(并抑制警告),您可以使用以下任何选项设置自定义项目名称:

原文由 Eugene Yarmash 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题