docker-compose no such service: myapp
I think you got the relation of docker
and docker-compose
wrong:
docker-compose
is a wrapper around docker
. To do its job docker-compose
needs its config: docker-compose.yaml
Spinning your example further:
create docker-compose.yaml:
version: '2'
services:
web:
container_name: myapp
build: .
command: node app.js
ports:
- "9000:3000"
use docker-compose
to start the container and run a command in the running container:
docker-compose up
docker-compose exec web /bin/bash
docker-compose
uses the name of the service - in your case this is web
- whereas docker
uses the container name - in this case myapp
.
So to run /bin/bash
through docker
, you would use the following:
docker exec -ti myapp /bin/bash
you could remove the container_name
from docker-compose.yaml
, then the container would be named automatically by docker-compose
- similar to the service, but prefixed with the name of the docker-compose
stack (the foldername where docker-compose.yaml
is located).