es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“wait-for-it” siempre expira en el entorno de Docker.

Estoy tratando de establecer una situación en la que un contenedor de Docker espera a que otro contenedor responda a un ping o agote el tiempo después de 20 segundos y luego ejecuta un script independientemente del éxito o del tiempo agotado.

Encontré un script útil llamado “wait-for-it” que debería hacer el trabajo de manera brillante. https://github.com/vishnubob/wait-for-it

Realicé pruebas en mi entorno local y todo funcionó sin problemas, pero cuando intenté hacer esto en el entorno de producción, sin importar cuál sea la dirección, incluso localhost, obtengo un tiempo de espera de operación y el comando nunca se llama.

Este es el punto de entrada (entrypoint) de mi archivo docker-compose:

entrypoint: [“wait-for-it”, “127.0.0.1:80”, “-t 20”, “–“, “script”, “127.0.0.1”]

Wait for it se copia en /usr/local/bin y se le da permisos chmod con un a+x. Realicé las pruebas en el contenedor y llamar a wait-for-it funciona.

Después de buscar en Google, descubrí que una causa común de este comportamiento es la falta de netcat, pero he verificado que dicho netcat está en la porción de apt install y que el comando nc es accesible en el contenedor, por lo que esto no debería ser un caso de netcat faltante.

La base de los contenedores es la siguiente: https://github.com/docker-library/python/blob/3d43bcf8ddd26ae85fd6a63a7e1d502b445c9cce/3.9/bullseye/Dockerfile

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Resolución de problemas del problema de timeout del contenedor Docker

    Estoy intentando hacer que un contenedor de Docker espere a que otro contenedor responda a un ping o tarde 20 segundos en hacerlo y luego ejecute un script, independientemente de si el ping tuvo éxito o si expiró el tiempo de espera. He descubierto un script conveniente llamado ‘wait-for-it’ que debería funcionar para esto. Realicé algunas pruebas en mi entorno local y todo fue exitoso, pero cuando lo intenté en el entorno de producción, me encontré con un error de ‘operación agotada’, independientemente de cuál fuera la dirección, incluso de localhost.

    Este es el punto de entrada de mi archivo docker-compose:

    entrypoint: ["wait-for-it", "127.0.0.1:80", "-t 20", "--", "script", "127.0.0.1"]

    Copié “wait-for-it” en “/usr/local/bin” y lo “chmod” con “a+x”. Lo probé dentro del contenedor y “wait-for-it” funciona.

    Después de investigar el problema, descubrí que la falta de netcat es una causa común de este problema. Sin embargo, verifiqué que netcat está en la sección “apt install” y que el comando “nc” es accesible en el contenedor, por lo que no debería haber un problema debido a la falta de netcat.

    El contenedor base que utilicé es este:
    https://github.com/docker-library/python/blob/3d43bcf8ddd26ae85fd6a63a7e1d502b445c9cce/3.9/bullseye/Dockerfile

    Sería útil si alguien pudiera ofrecer orientación sobre cómo proceder para resolver este problema.

Comments are closed.