Descargar imágenes de servicios ignorando los 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.