Как перенести окружение docker-compose на другой компьютер - PullRequest
0 голосов
/ 10 января 2019

Я разрабатываю сервис с использованием docker-compose и развертываю контейнеры на удаленном хосте с помощью следующих команд:

eval $(docker-machine env digitaloceanserver)
docker-compose build && docker-compose stop && docker-compose rm -f && docker-compose up -d

Моя проблема в том, что я меняю ноутбук и экспортировал докеры на новый ноутбук, и я могу их активировать. Но когда я пытаюсь внедрить новые изменения, возникают следующие ошибки:

Создание postgres ... ошибка Создание redis ... ОШИБКА: для postgres Невозможно создать контейнер для службы postgres: b'Conflict. имя контейнера "/ postgres" уже используется контейнером "612f3887544224aeCreating redis ... errorERROR: для redis невозможно создать контейнер для сервиса redis: b'Conflict. Название контейнера "/ redis" уже используется контейнером "01875947f0ce7ba3978238525923e54e0c800fa0a4b419dd2a28cc07c285eb78". Вы должны удалить (или переименовать) этот контейнер, чтобы иметь возможность использовать его name.'ERROR: для postgres Невозможно создать контейнер для сервиса postgres: b'Conflict. Имя контейнера "/ postgres" уже используется контейнером "612f3887544224ae79f67e29552b4d97e246104b8a057b3a03d39f6546dbbd38". Вы должны удалить (или переименовать) этот контейнер, чтобы иметь возможность использовать его name.'ERROR: для redis Невозможно создать контейнер для службы redis: b'Conflict. Имя контейнера "/ redis" уже используется контейнером "01875947f0ce7ba3978238525923e54e0c800fa0a4b419dd2a28cc07c285eb78". Вы должны удалить (или переименовать) этот контейнер, чтобы иметь возможность использовать его название.' ОШИБКА: обнаружены ошибки при запуске проекта.

Мой docker-compose.yml такой:

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:

1 Ответ

0 голосов
/ 10 января 2019

Вы видите эти ошибки, потому что вы явно устанавливаете container_name:, и те же самые имена контейнеров используются в других местах. Удалите эти явные настройки. (Они не нужны даже для межконтейнерной DNS; Docker Compose автоматически создает для вас псевдоним, используя имя сервисного блока.)

Все еще существуют потенциальные проблемы из-за конфликтов портов. Если ваш другой контейнер PostgreSQL прослушивает тот же (по умолчанию) хост-порт 5432, то тот, который вы объявите в этом файле docker-compose.yml, будет конфликтовать с ним. Вы можете просто не открывать порты контейнера вашей базы данных или вам может потребоваться изменить номера портов в этом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...