Docker

docker-compose 沒有這樣的服務:myapp

  • January 14, 2022

我執行了一個圖像:‘docker-compose up’

使用 ‘docker ps’ 我得到:

CREATED             STATUS              PORTS                    NAMES
55e1fd18acf1        simpleappnodedocker_web   "node app.js"            6 seconds ago       Up 6 seconds        0.0.0.0:9000->3000/tcp   myapp
9879ff20e241        postgres:9.6              "docker-entrypoint..."   36 hours ago        Up 36 hours         0.0.0.0:5432->5432/tcp   nd-db

我嘗試執行 bash 進入 shell,但我得到一個錯誤,如何解決這個問題,我想我做錯了什麼。

$docker-compose run myapp /bin/bash   
ERROR: No such service: myapp

碼頭工人-compose.yml:

version: '2'
services:
 web:
   container_name: myapp
   build: .
   command: node app.js
   ports:
     - "9000:3000"

我認為你得到了dockerdocker-compose錯誤的關係:

docker-compose是一個包裝器docker。要完成它的工作docker-compose需要它的配置:docker-compose.yaml

進一步旋轉您的範例:

創建docker-compose.yaml

version: '2'
services:
 web:
   container_name: myapp
   build: .
   command: node app.js
   ports:
     - "9000:3000"

用於docker-compose啟動容器並在正在執行的容器中執行命令:

docker-compose up
docker-compose exec web /bin/bash

docker-compose使用服務的名稱 - 在您的情況下是web- 而docker使用容器名稱 - 在這種情況下myapp

因此,要執行/bin/bashdocker您將使用以下內容:

docker exec -ti myapp /bin/bash

您可以刪除container_namefrom docker-compose.yaml,然後容器將自動命名為docker-compose- 類似於服務,但以docker-compose堆棧名稱(所在的文件夾名稱)為前綴docker-compose.yaml

引用自:https://serverfault.com/questions/934336