首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将停靠组合环境移动到其他计算机上

如何将停靠组合环境移动到其他计算机上
EN

Stack Overflow用户
提问于 2019-01-10 15:15:40
回答 1查看 962关注 0票数 0

我正在使用docker-组合开发一个服务,并使用以下命令将容器部署到远程主机:

代码语言:javascript
复制
eval $(docker-machine env digitaloceanserver)
docker-compose build && docker-compose stop && docker-compose rm -f && docker-compose up -d

我的问题是,我正在改变笔记本电脑,我把对接机导出到新的笔记本电脑,我可以激活它们。但是,当我尝试部署新的更改时,它会引发以下错误:

创造postgres ..。创建redis ...ERROR: for postgres不能为服务postgres创建容器:B‘冲突。容器名称"/postgres“已被容器”612f3887544224aeCreatingredis“使用。errorERROR:对于redis,无法为服务创建容器-- redis: B‘冲突。容器名称"/redis“已经被容器/redis使用了。您必须删除(或重命名)该容器才能重用该名称。错误:因为postgres不能为服务postgres: B‘冲突创建容器。容器名称"/postgres“已经被容器/postgres使用了。您必须删除(或重命名)该容器才能重用该名称。错误:因为redis不能为服务创建容器redis: B‘冲突。容器名称"/redis“已经被容器/redis使用了。您必须删除(或重命名)该容器,才能重用该名称。错误:在启动项目时遇到错误。

我的码头-Compose.yml是这样的:

代码语言:javascript
复制
services:
  nginx:
    build: './docks/nginx/.'
    ports:
      - '80:80'
      - "443:443"
    volumes:
      - letsencrypt_certs:/etc/nginx/certs
      - letsencrypt_www:/var/www/letsencrypt
    volumes_from:
      - web:ro
    depends_on:
      - web

  letsencrypt:
    build: './docks/certbot/.'
    command: /bin/true
    volumes:
      - letsencrypt_certs:/etc/letsencrypt
      - letsencrypt_www:/var/www/letsencrypt

  web:
    build: './sources/.'
    image: 'websource'
    ports:
      - '127.0.0.1:8000:8000'
    env_file: '.env'
    command: 'gunicorn cuidum.wsgi:application -w 2 -b :8000 --reload --capture-output --enable-stdio-inheritance --log-level=debug --access-logfile=- --log-file=-'
    volumes:
      - 'cachedata:/cache'
      - 'mediadata:/media'
    depends_on:
      - postgres
      - redis

  celery_worker:
    image: 'websource'
    env_file: '.env'
    command: 'python -m celery -A cuidum worker -l debug'
    volumes_from:
      - web
    depends_on:
      - web

  celery_beat:
    container_name: 'celery_beat'
    image: 'websource'
    env_file: '.env'
    command: 'python -m celery -A cuidum beat --pidfile= -l debug'
    volumes_from:
      - web
    depends_on:
      - web

  postgres:
    container_name: 'postgres'
    image: 'mdillon/postgis'
    ports:
      - '127.0.0.1:5432:5432'
    volumes:
      - 'pgdata:/var/lib/postgresql/data/'

  redis:
    container_name: 'redis'
    image: 'redis:3.2.0'
    ports:
      - '127.0.0.1:6379:6379'
    volumes:
      - 'redisdata:/data'

volumes:
  pgdata:
  redisdata:
  cachedata:
  mediadata:
  staticdata:
  letsencrypt_certs:
  letsencrypt_www:
EN

回答 1

Stack Overflow用户

发布于 2019-01-10 16:52:43

您看到这些错误是因为您显式地设置了container_name:,并且在其他地方使用了相同的容器名称。删除那些显式设置。(即使对于容器间DNS,也不需要它们;Docker Compose会使用服务块的名称自动为您创建别名。)

港口冲突仍然存在潜在的问题。如果您的另一个PostgreSQL容器正在侦听同一个(默认)主机端口5432,那么您在此docker-compose.yml文件中声明的端口将与其冲突。您可能不公开数据库容器端口,或者可能需要更改此文件中的端口号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54131700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档