docker-compose 没有这样的服务:myapp

sta*_*ave 17 docker

我已经运行了一个图像:'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
Run Code Online (Sandbox Code Playgroud)

我尝试运行 bash 以进入 shell,但出现错误,如何解决这个问题,我想我做错了什么。

$docker-compose run myapp /bin/bash   
ERROR: No such service: myapp
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: '2'
services:
  web:
    container_name: myapp
    build: .
    command: node app.js
    ports:
      - "9000:3000"
Run Code Online (Sandbox Code Playgroud)

Phi*_*ann 34

我认为你得到了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"
Run Code Online (Sandbox Code Playgroud)

用于docker-compose启动容器并在正在运行的容器中运行命令:

docker-compose up
docker-compose exec web /bin/bash
Run Code Online (Sandbox Code Playgroud)

docker-compose使用服务的名称 - 在您的情况下是web- 而docker使用容器名称 - 在这种情况下myapp

因此,要/bin/bash贯穿docker,您将使用以下内容:

docker exec -ti myapp /bin/bash
Run Code Online (Sandbox Code Playgroud)

您可以删除container_namefrom docker-compose.yaml,然后容器将自动命名为docker-compose- 类似于服务,但前缀为docker-compose堆栈名称(所在的文件夹名称docker-compose.yaml)。

  • 您可以使用以下命令指定 `docker-compose` yaml 文件:`docker-compose -f docker-compose-custom.yml` (2认同)