docker-compose no tal serviço: myapp

2

Eu corri uma imagem com: 'docker-compose up'

Com 'docker ps' eu recebo:

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

Eu tento executar o bash para entrar no shell, mas eu recebo um erro, como resolver isso, eu acho que estou fazendo algo errado.

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

docker-compose.yml:

version: '2'
services:
  web:
    container_name: myapp
    build: .
    command: node app.js
    ports:
      - "9000:3000"
    
por stackdave 07.10.2018 / 11:14

1 resposta

1

Acho que você tem a relação de docker e docker-compose errado:

docker-compose é um wrapper em torno de docker . Para fazer seu trabalho docker-compose precisa de sua configuração: docker-compose.yaml

Girando ainda mais o seu exemplo:

crie docker-compose.yaml :

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

use docker-compose para iniciar o contêiner e executar um comando no contêiner em execução:

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

docker-compose usa o nome do serviço - no seu caso, isso é web - enquanto docker usa o nome do contêiner - nesse caso, myapp .

Portanto, para executar /bin/bash a docker , você usaria o seguinte:

docker exec -ti myapp /bin/bash

você poderia remover o container_name de docker-compose.yaml , então o contêiner seria nomeado automaticamente por docker-compose - semelhante ao serviço, mas prefixado com o nome da pilha docker-compose (o nome da pasta onde docker-compose.yaml está localizado).

    
por 07.10.2018 / 12:10

Tags