Docker-compose нет такой службы: myapp

Я думаю, у вас есть отношение к docker и docker-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 updocker-compose exec web /bin/bash

docker-compose использует название службы - в вашем случае это web - в то время как docker использует имя контейнера - в данном случае myapp.

Так что бежать /bin/bash через docker, вы бы использовали следующее:

docker exec -ti myapp /bin/bash

вы могли бы удалить container_name от docker-compose.yaml, тогда контейнер будет назван автоматически с помощью docker-compose - аналогично сервису, но с префиксом имени docker-compose стек (имя папки, где docker-compose.yaml находится).