• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

176
Views
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í?

over 3 years ago · Santiago Trujillo
2 answers
Answer question

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.

over 3 years ago · Santiago Trujillo Report

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!

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error