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 ladocker 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)