Загрузка образов сервисов с игнорированием сборки (buildable services)
В этом шаге мы рассмотрим использование флага --ignore-buildable с командой docker compose pull. Этот флаг полезен, когда ваш файл compose.yaml содержит как сервисы, использующие готовые образы, так и сервисы, которые собираются из Dockerfile (buildable services). Флаг --ignore-buildable указывает Docker Compose загружать образы только для сервисов с указанным ключом image, пропуская сервисы с ключом build.
Сначала модифицируем наш файл compose.yaml, добавив сервис для сборки. Создадим простой сервис, который собирает базовый образ.
Убедитесь, что находитесь в директории ~/project/my-compose-app.
cd ~/project/my-compose-app
Создадим простой Dockerfile для нашего сервиса:
nano Dockerfile
Вставьте следующее содержимое в Dockerfile:
FROM alpine:latest
CMD ["echo", "Hello from buildable service!"]
Сохраните файл и выйдите из редактора nano.
Теперь изменим файл compose.yaml, добавив новый сервис, использующий этот Dockerfile.
nano compose.yaml
Добавьте следующее определение сервиса в ваш файл compose.yaml после сервиса db:
builder:
build: .
Полный файл compose.yaml теперь должен выглядеть так:
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: redis:latest
builder:
build: .
Сохраните файл и выйдите из редактора nano.
Теперь выполним загрузку образов с флагом --ignore-buildable:
docker compose pull --ignore-buildable
Вы увидите, что Docker Compose проверяет сервисы web и db и загружает их образы при необходимости (они уже должны быть загружены на предыдущих шагах). Однако сервис builder будет проигнорирован, так как использует ключ build вместо image. В выводе не будет информации о сборке или загрузке образа для сервиса builder.
Чтобы убедиться, что для сервиса builder не был создан или загружен образ, выведите список Docker-образов:
docker images
Вы должны увидеть только образы nginx и redis. Новый образ из Dockerfile не будет создан этой командой.
Это демонстрирует, как флаг --ignore-buildable позволяет выборочно загружать только готовые образы, что может быть полезно в различных сценариях разработки и развертывания.