У меня есть стек docker-compose, запущенный на удаленном компьютере через CI / CD gitlab (бегун соединяется с механизмом докера на удаленном компьютере и выполняет развертывание с помощью docker-compose up -d
).
КогдаЯ подключаюсь к этой машине с моего ноутбука, используя eval docker-machine env REMOTE_ADDRESS
, вижу рабочие процессы докера (с docker ps
), в то время как стек служб кажется пустым (docker-compose ps
).
Яне могу использовать docker-compose down
для остановки стека, и попытка docker-compose up -d
дает мне ошибку
ERROR: for feamp_postgres Cannot create container for service postgres: Conflict. The container name "/feamp_postgres" is already in use by container "40586885...". You have to remove (or rename) that container to be able to reuse that name.
Обратное также верно, я могу запустить стек с моего локального ноутбука (используя докер-машину), но затем происходит сбой конвейера CI / CD при попытке выполнить docker-compose up -d
с той же ошибкой.
Это происходит с использованием последних версий docker и docker-compose, как на ноутбуке (OSX), так и набегун (Ubuntu 18.04).
В других обстоятельствах (~ 10 других проектов) это работало гладко.
Это файл docker-compose.yml
, который я использую.
version: "3.7"
services:
web:
container_name: feamp_web
restart: always
image: guglielmo/fpa/feamp:latest
expose:
- "8000"
links:
- postgres:postgres
- redis:redis
environment:
- ...
volumes:
- public:/app/public
- data:/app/data
- uwsgi_spooler:/var/lib/uwsgi
- weblogs:/var/log
command: /usr/local/bin/uwsgi --socket=:8000 ...
nginx:
container_name: feamp_nginx
restart: always
...
postgres:
container_name: feamp_postgres
restart: always
image: postgres:11-alpine
...
redis:
container_name: feamp_redis
restart: always
image: redis:latest
...
volumes:
...
networks:
default:
external:
name: webproxy
Обычно я могу получить стек от моего локального ноутбука и управляют им из конвейера CI / CD на gitlab или наоборот.
Эта диаграмма должна помочь визуализировать ситуацию.
+-----------------+
| |
| Remote server |
| |
+----|--------|---+
| |
| |
docker-compose ps| |docker-compose up -d
| |
| |
+-------------------+ | | +--------------------+
| | | | | |
| Docker client 1 ---------+ +--------- Docker client 2 |
| | | |
+-------------------+ +--------------------+
Подключение к удаленномумеханизм докера сервера выполняется через docker-machine
.