CREATED STATUS PORTS NAMES55e1fd18acf1 simpleappnodedocker_web "node app.js" 6 seconds ago Up 6 seconds 0.0.0.0:9000->3000/tcp myapp9879ff20e241 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 recebo um erro, Como resolver isso, acho que estou fazendo algo errado.
$docker-compose run myapp /bin/bash ERROR: No such service: myapp
usar docker-compose para iniciar o contêiner e executar um comando no contêiner em execução:
docker-compose updocker-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-neste caso myapp.
Então, para correr /bin/bash por docker, você usaria o seguinte:
docker exec -ti myapp /bin/bash
você pode 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 do docker-compose stack (o nome da pasta onde docker-compose.yaml está localizado).
A outra resposta está certa, mas de alguma forma foi um pouco confusa em sua ampla explicação sobre " A relação de docker e docker-compose".
A principal coisa a se livrar do erro em questão é fazer o que o erro diz: & quot; erro: não existe tal serviço: & quot;, portanto, você dever escolha um serviço que esteja em seu arquivo de composição e nao o nome do contêiner. No exemplo, é web, e não myapp.
Verifique também se você está executando o comando na mesma pasta que o docker-compose.yml, caso contrário, você receberá a mesma mensagem de erro, mas a resposta de Phillip acima não funcionará.
você está definitivamente fazendo algo errado. Para ajudá-lo, eu precisaria saber o que você fez e como você fez isso. Por favor, publique seu docker-compose.yaml e um recall completo de todos os seus passos.