Shell interactivo usando Docker Compose

Resuelto drubb asked hace 8 años • 0 respuestas

¿Hay alguna forma de iniciar un shell interactivo en un contenedor usando Docker Compose únicamente? Probé algo como esto, en mi docker-compose.yml:

myapp:
  image: alpine:latest
  entrypoint: /bin/sh

Cuando inicio este contenedor usando Docker-compose up, se cierra inmediatamente. ¿Hay indicadores que pueda agregar al entrypointcomando, o como una opción adicional myapp, para iniciar un shell interactivo?

Sé que existen opciones nativas de comando de Docker para lograr esto, solo tengo curiosidad por saber si también es posible usar solo Docker Compose.

drubb avatar Mar 27 '16 23:03 drubb
Aceptado

Debe incluir las siguientes líneas en su docker-compose.yml:

version: "3"
services:
  app:
    image: app:1.2.3
    stdin_open: true # docker run -i
    tty: true        # docker run -t

El primero corresponde a -iin docker runy el segundo a -t.

Leon Carlo Valencia avatar Aug 25 '2016 16:08 Leon Carlo Valencia

La forma canónica de obtener un shell interactivo con docker-compose es usar:

docker-compose run --rm myapp

Con el nombre del servicio myapptomado de su ejemplo. Más general: debe ser un nombre de servicio existente en su archivo docker-compose, myappno es solo un comando de su elección. Por ejemplo, bashen lugar de myappno funcionaría aquí.

Puede configurar stdin_open: true, tty: true, sin embargo, eso en realidad no le dará un shell adecuado up, porque los registros se transmiten desde todos los contenedores.

También puedes usar:

docker exec -ti <container name> /bin/bash

para obtener un shell en un contenedor en ejecución.

dnephin avatar Mar 28 '2016 15:03 dnephin

El ejemplo oficial de introducción ( https://docs.docker.com/compose/gettingstarted/ ) utiliza lo siguiente docker-compose.yml:

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:5000"
  redis:
    image: "redis:alpine"

Después de comenzar esto con docker-compose up, puede ingresar a su rediscontenedor o a su webcontenedor con:

docker-compose exec redis sh
docker-compose exec web sh 
clay avatar Nov 14 '2017 22:11 clay

docker-compose run myapp shdebería hacer el trato.

Existe cierta confusión con up/ run, pero docker-compose runlos documentos tienen una excelente explicación: https://docs.docker.com/compose/reference/run

Alex Povar avatar Apr 04 '2018 09:04 Alex Povar