Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

395
Visualizações
Docker ejecuta anular el punto de entrada con un script de shell que acepta argumentos

Tengo un script de shell de punto de entrada que acepta argumentos -a -b .

Tengo un archivo docker-compose.yml en funcionamiento donde anulo el punto de entrada de tomcat con la instrucción:

 entrypoint: /usr/local/tomcat/entrypoint.sh -a param1 -b param2

¿Qué es la alternativa de ejecución de Docker ?

 docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8

No funciona

Yo obtengo:

 docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"/usr/local/tomcat/entrypoint.sh -a param1 -b param2\\\": stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2: no such file or directory\"\n".

Para tu información:

 docker run --entrypoint "/usr/local/tomcat/entrypoint.sh" tomcat:jre8

funciona desde el punto de vista de Docker, pero obviamente el script falla

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Es por las comillas que está usando alrededor de su comando.

Cuando ejecuta docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8 Docker trata todo lo que está dentro de esas comillas como un solo archivo de script.

Como se puede ver en el error:

 stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2: no such file or directory\"\n".

Está tratando de realizar una stat en el archivo antes de ejecutarlo, por lo que sabe si existe.

Coloque los argumentos en su punto de entrada al final de su comando docker así:

 docker run --entrypoint <entrypoint.sh> <image:tag> <arg1> <arg2> <arg3>

Su comando se convierte en:

 docker run --entrypoint /usr/local/tomcat/entrypoint.sh tomcat:jre8 -a param1 -b param2

Eche un vistazo a los fragmentos de código en la documentación oficial:

El PUNTO DE ENTRADA de una imagen es similar a un COMANDO porque especifica qué ejecutable ejecutar cuando se inicia el contenedor

https://docs.docker.com/engine/reference/run/#/entrypoint-default-command-to-execute-at-runtime

over 4 years ago · Santiago Trujillo Relatório

0

Creo que esto también vale la pena señalar:

Si tiene un montón de argumentos para su comando de docker run , su --entrypoint debería ser lo primero.

No sé cuál de mis argumentos fue el problema, pero poner --entrypoint "/bin/bash" al final no impidió la ejecución de ENTRYPOINT desde Dockerfile. Mis argumentos incluían:

  • 1x --rm
  • 1x --nombre
  • 1x -es
  • 3x-v
  • 6x-p
  • 4x -e
over 4 years ago · Santiago Trujillo Relatório

0

NB: respondiendo a esta vieja pregunta porque la respuesta propuesta no me satisface, ya que en parte está equivocada.

Respuesta corta: no hay forma de anular el punto de entrada con múltiples argumentos, pero puede moverlos al comando (parte después del nombre de la imagen) que funcionará


Respuesta más detallada:

Después de algunas pruebas y de leer los documentos, es obvio que no hay forma de imitar el comportamiento del punto de entrada de dockerfile o docker-compose con docker run.

Las respuestas propuestas anulan el punto de entrada a un solo binario (es decir, sin argumentos) y colocan los argumentos originales en el COMANDO.

A menudo eso funciona, pero realmente hay una diferencia conceptual que puede revelar usando la docker inspect .

En Docker, ENTRYPOINT es el binario + los argumentos predeterminados que se iniciarán al inicio y que el usuario no debe cambiar en el uso normal. COMMAND son los argumentos o parámetros restantes que desea que el usuario cambie (por ejemplo, el nombre de host objetivo de ping). Por lo tanto, son conceptualmente diferentes.

Diciendo que en muchos casos esto no es una cuestión de mover argumentos desde el punto de entrada al comando para un contenedor de una sola vez, el comando resultante se verá igual.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda