tag library images imagenes hub dockers container compose docker dockerfile

library - dockers images



Ejecute el comando en el host durante la construcción de la ventana acoplable (2)

¿Es posible crear Dockerfile que ejecuta un comando en el host cuando se está construyendo la imagen?

Ahora estoy haciendo:

./script_that_creates_magic_file.sh docker build .

con Dockerfile:

FROM alpine COPY magic_file

Quiero poder hacer:

docker build .

con Dockerfile:

FROM alpine # invoke script_that_creates_magic_file.sh on the host COPY magic_file

Por supuesto, este script está en el mismo directorio que Dockerfile.


(Sólo una sugerencia)

Por lo general, tenemos la siguiente estructura para construir nuestras imágenes docker:

my-image/ ├── assets │   ├── entrypoint.sh │   └── install.sh ├── build.sh ├── Dockerfile ├── README.md └── VERSION

  • build.sh : Aquí es donde debe invocar script_that_creates_magic_file.sh . Otras tareas comunes implican descargar los archivos requeridos o copiar temporalmente las claves ssh desde el host. Por último, este script llamará a la docker build .
  • Dockerfile : como siempre, pero dependiendo de la cantidad de comandos que necesitamos ejecutar, podríamos tener un install.sh
  • install.sh : esto se copia y se ejecuta dentro del contenedor, instala paquetes, elimina archivos innecesarios, etc. Sin estar 100% seguro, creo que este enfoque reduce el número de capas evitando múltiples comandos en un solo RUN
  • entrypoint.sh : punto de entrada del contenedor. Nos permite realizar tareas cuando se inicia el contenedor (como variables de entorno de análisis) e imprimir información de depuración

Considero que la estructura anterior es conveniente y auto documentada, ya que todos en el equipo pueden crear cualquier imagen (sin instrucciones / pasos especiales). El archivo README está ahí para explicar lo que está haciendo la imagen ... pero no te mentiré ... normalmente está vacío ... (o tiene un h1 para que aparezca el gitlab) :)


Para responder a la pregunta; no, no hay una funcionalidad integrada para ejecutar un comando en el host antes de la docker build (es decir, no hay "enganches" para activar scripts en el host).

Si proporciona más información sobre su caso de uso, es posible que existan alternativas (por ejemplo, utilizando una combinación de --build-arg , y docker compose)