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

Я запустил изображение с помощью: "docker-compose up"

С помощью "docker ps" я получаю:

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

Я пытаюсь запустить bash, чтобы войти в оболочку, но я получаю сообщение об ошибке, как это решить, я думаю, что делаю что-то не так.

$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"

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

Также убедитесь, что вы запускаете команду в той же папке, что и ваш docker-compose.yml, в противном случае вы получите то же сообщение об ошибке, но ответ Филиппа выше не будет работать.

вы определенно делаете что-то не так. Чтобы помочь вам, мне нужно было бы знать, что вы сделали и как вы это сделали. Пожалуйста, опубликуйте свой docker-compose.yaml и полный отчет обо всех ваших шагах.

он работает с: docker exec -это myapp /bin /bash

@Phillip-ZyanKLee-Stockmann у вас есть конфигурация yml, но вам действительно нужно использовать docker-compose run, могу ли я сделать это с помощью docker run?

нет, ты этого не делаешь. но это отличный инструмент для того, чтобы иметь конфигурацию, например, в репозитории git

итак, где же ошибка?

Ааа, теперь я, кажется, понял. Я опубликую ответ.