docker-compose no existe tal servicio: myapp

He ejecutado una imagen con: 'docker-compose up'

Con 'docker ps' obtengo:

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

Intento ejecutar el bash para ingresar al shell, pero aparece un error, cómo resolver esto, creo que estoy haciendo algo mal.

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

Creo que tienes la relación de docker y docker-compose Equivocada:

docker-compose es un envoltorio alrededor docker. Para hacer su trabajo docker-compose necesita su configuración: docker-compose.yaml

Dando más vueltas a tu ejemplo:

crear docker-compose.yaml:

version: '2'services:  web:    container_name: myapp    build: .    command: node app.js    ports:      - "9000:3000"

utilizar docker-compose para iniciar el contenedor y ejecutar un comando en el contenedor en ejecución:

docker-compose updocker-compose exec web /bin/bash

docker-compose utiliza el nombre del servicio ; en su caso, este es web - mientras docker utiliza el nombre del contenedor , en este caso myapp.

Así que para correr /bin/bash mediante docker, usarías lo siguiente:

docker exec -ti myapp /bin/bash

puede quitar el container_name de docker-compose.yaml, entonces el contenedor se nombraría automáticamente por docker-compose - similar al servicio, pero con el prefijo del nombre del docker-compose pila (el nombre de la carpeta donde docker-compose.yaml se encuentra).

La otra respuesta es correcta, pero de alguna manera fue un poco confusa en su amplia explicación sobre " la relación de docker y docker-compose".

Lo principal para deshacerse del error en cuestión es hacer lo que dice el error: & quot;ERROR: No such service:", por lo tanto, usted deber elija un servicio que esté en el archivo de redacción y ni el nombre del contenedor. En el ejemplo, es web y NO myapp.

En tu caso, no corras

docker-compose run --rm myapp bash

pero corre

docker-compose run --rm web bash

También asegúrate de que estás ejecutando el comando en la misma carpeta que docker-compose.yml, de lo contrario obtendrá el mismo mensaje de error, pero la respuesta de Phillip anterior no funcionará.

definitivamente estás haciendo algo mal. Para ayudarte, necesitaría saber qué hiciste y cómo lo hiciste. Por favor, publique su docker-compose.yaml y un recuerdo completo de todos sus pasos.

funciona con: docker exec-it myapp / bin / bash

@ Phillip-ZyanKLee-Stockmann tienes la configuración de yml, pero realmente necesitas usar docker-compose run, si puedo hacerlo con docker run?

no, no lo haces, pero es una gran herramienta tener la configuración en un repositorio de git, por ejemplo

entonces, ¿dónde está el error?

Ahh, ahora lo entiendo, creo. Publicaré una respuesta.