Descargar imágenes de servicios ignorando servicios construibles
En este paso, exploraremos cómo usar la bandera --ignore-buildable con docker compose pull. Esta opción es útil cuando tu archivo compose.yaml incluye servicios que se construyen desde un Dockerfile (servicios construibles) además de servicios que usan imágenes preconstruidas. La bandera --ignore-buildable indica a Docker Compose que solo descargue imágenes para servicios que especifiquen una clave image, omitiendo aquellos con clave build.
Primero, modifiquemos nuestro archivo compose.yaml para incluir un servicio construible. Añadiremos un servicio básico que construye una imagen simple.
Asegúrate de estar en el directorio ~/project/my-compose-app.
cd ~/project/my-compose-app
Ahora, crea un Dockerfile simple para nuestro servicio construible.
nano Dockerfile
Pega el siguiente contenido en el Dockerfile:
FROM alpine:latest
CMD ["echo", "Hello from buildable service!"]
Guarda el archivo y sal del editor nano.
Luego, modifica el archivo compose.yaml para incluir un nuevo servicio que use este Dockerfile.
nano compose.yaml
Añade la siguiente definición de servicio a tu archivo compose.yaml, debajo del servicio db:
builder:
build: .
Tu archivo compose.yaml completo debería verse así:
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: redis:latest
builder:
build: .
Guarda el archivo y sal del editor nano.
Ahora, intentemos descargar imágenes usando docker compose pull --ignore-buildable.
docker compose pull --ignore-buildable
Observarás que Docker Compose verifica los servicios web y db y descarga sus imágenes si es necesario (ya deberían estar descargadas de pasos anteriores). Sin embargo, ignorará el servicio builder porque usa la clave build en lugar de image. No verás ninguna salida relacionada con la construcción o descarga de una imagen para el servicio builder.
Para confirmar que no se construyó ni descargó ninguna imagen para el servicio builder, puedes listar tus imágenes de Docker.
docker images
Solo deberías ver las imágenes nginx y redis listadas. No habrá una nueva imagen creada desde el Dockerfile por este comando.
Esto demuestra cómo la bandera --ignore-buildable te permite descargar selectivamente solo imágenes preconstruidas, lo que puede ser útil en varios escenarios de desarrollo e implementación.