Я думаю, у вас есть отношение к 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
находится).