Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
Uso de un script de shell personalizado como punto de entrada de la ventana acoplable

Estoy tratando de usar docker-compose para abrir un contenedor. Como ENTRYPOINT , ese contenedor tiene un script bash simple que escribí. Ahora, cuando trato de abrir el contenedor de cualquiera de las siguientes maneras:

  • docker-compose up
  • docker-compose up foo

no se completa es decir, intentar adjuntar ( docker exec -i -t $1 /bin/bash ) al contenedor en ejecución, falla con:

Respuesta de error del daemon: el contenedor xyz se está reiniciando, espere hasta que el contenedor se esté ejecutando.

Intenté jugar con poner comandos en segundo plano. Eso no funcionó.

mi-script.sh

 cmd1 & cmd2 && ... cmdn &

También probé i) con y sin entrypoint: /bin/sh /usr/local/bin/my-script.sh y ii) con y sin la opción tty: true . No dados.

docker-compose.yml

 version: '2' services: foo: build: context: . dockerfile: Dockerfile.foo ... tty: true entrypoint: /bin/sh /usr/local/bin/my-script.sh

También probé solo un ciclo manual de compilación/ejecución de la ventana acoplable. Y (sin iniciar /bin/sh en ENTRYPOINT ) la ejecución simplemente sale.

 $ docker build ... . $ docker run -it ... ... shell echos commands here, then exits $

Estoy seguro de que es algo simple. ¿Cuál es la solución aquí?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Su punto de entrada en su docker-compose.yml entrypoint necesita ser

 entrypoint: /usr/local/bin/my-script.sh

¡Solo agrega #! /bin/sh en la parte superior de la secuencia de comandos para especificar el shell que desea utilizar.

También debe agregar exec "$@" al final de su secuencia de comandos de punto de entrada o, de lo contrario, se cerrará de inmediato, lo que terminará el contenedor.

about 4 years ago · Santiago Trujillo Denunciar

0

En primer lugar, debe poner algo infinito para seguir ejecutando su contenedor en segundo plano, como puede hacer tail -f application.log o algo así para que, incluso si sale de su contenedor bash, siga ejecutándose en segundo plano.

no necesita hacer cmd1 & cmd2 &&...cmdn & simplemente coloque un comando como este touch 1.txt && tail -f 1.txt como último paso en su my-script.sh . Seguirá ejecutando su contenedor. Una cosa que también debe cambiar es docker run -it -d -d iniciará el contenedor con el modo de fondo. Si desea ingresar a su contenedor, entonces docker exec -it container_name/id bash depura el problema y sale. su contenedor se ejecuta hasta que se detiene con docker stop container_id/name Espero que esto ayude. ¡Gracias!

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda