Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

394
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!