[英]docker-compose ps does not show running services
I have a docker-compose stack launched on a remote machine, through gitlab CI/CD (a runner connects to the docker engine on the remote machine and performs the deploy with 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 docker-machine
執行與遠程服務器的 docker 引擎的連接。
似乎在調用docker-compose
命令時指定項目名稱可以解決問題。
這可以在兩個客戶端上使用命令行中的-p
參數或COMPOSE_PROJECT_NAME
環境變量來完成。
由於某些原因,這在以前的項目中是不需要的。 可能是docker的變化(我是從18改到19的),或者別的什么,具體還是不知道。
而不是使用docker-compose ps
您可以嘗試docker ps -a
並從那里開始工作。
假設您可以簡單地丟棄容器,您可以通過調用以下方法強制刪除:
docker rm -f 40586885
docker network rm webproxy
就我而言,問題是項目名稱 into.env 文件
docker compose 3.7, docker 最新版本 (2022-07-17)
COMPOSE_PROJECT_NAME = demo.sitedomain-testing.com
撰寫項目名稱不支持點 (.)。 我剛被hifen取代,效果很好。
COMPOSE_PROJECT_NAME = demo-sitedomain-testing-com
另外,容器名稱也一樣,不支持點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.