【发布时间】:2019-10-02 23:17:37
【问题描述】:
我通过 gitlab CI/CD 在远程机器上启动了一个 docker-compose 堆栈(运行器连接到远程机器上的 docker 引擎并使用 docker-compose up -d 执行部署)。
当我从笔记本电脑使用 eval docker-machine env REMOTE_ADDRESS 连接到那台机器时,我可以看到 docker 进程正在运行(使用 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.
反过来也是如此,我可以从我的本地笔记本电脑启动堆栈(使用 docker-machine),但是当尝试执行 docker-compose up -d 时 CI/CD 管道失败并出现相同的错误。
在笔记本电脑 (OSX) 和运行器 (ubuntu 18.04) 上使用最新版本的 docker 和 docker-compose 会发生这种情况。
在其他情况下(约 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
通常我可以从本地笔记本电脑从 gitlab 上的 CI/CD 管道管理堆栈,反之亦然。
此图应该有助于可视化情况。
+-----------------+
| |
| Remote server |
| |
+----|--------|---+
| |
| |
docker-compose ps| |docker-compose up -d
| |
| |
+-------------------+ | | +--------------------+
| | | | | |
| Docker client 1 ---------+ +--------- Docker client 2 |
| | | |
+-------------------+ +--------------------+
通过docker-machine执行与远程服务器的docker引擎的连接。
【问题讨论】:
标签: docker docker-compose docker-machine