Buscar (pull) imagens de serviço ignorando serviços construíveis
Nesta etapa, exploraremos como usar a flag --ignore-buildable com docker compose pull. Essa flag é útil quando seu arquivo compose.yaml inclui serviços que são construídos a partir de um Dockerfile (serviços construíveis), além de serviços que usam imagens pré-construídas. A flag --ignore-buildable informa ao Docker Compose para buscar (pull) apenas imagens para serviços que especificam uma chave image e para ignorar serviços que especificam uma chave build.
Primeiro, vamos modificar nosso arquivo compose.yaml para incluir um serviço construível. Adicionaremos um serviço simples que constrói uma imagem básica.
Certifique-se de estar no diretório ~/project/my-compose-app.
cd ~/project/my-compose-app
Agora, crie um Dockerfile simples para nosso serviço construível.
nano Dockerfile
Cole o seguinte conteúdo no Dockerfile:
FROM alpine:latest
CMD ["echo", "Hello from buildable service!"]
Salve o arquivo e saia do editor nano.
Em seguida, modifique o arquivo compose.yaml para incluir um novo serviço que usa este Dockerfile.
nano compose.yaml
Adicione a seguinte definição de serviço ao seu arquivo compose.yaml, abaixo do serviço db:
builder:
build: .
Seu arquivo compose.yaml completo agora deve ser semelhante a este:
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: redis:latest
builder:
build: .
Salve o arquivo e saia do editor nano.
Agora, vamos tentar buscar (pull) imagens usando docker compose pull --ignore-buildable.
docker compose pull --ignore-buildable
Você observará que o Docker Compose verifica os serviços web e db e busca (pull) suas imagens, se necessário (elas já devem ter sido buscadas (pulled) nas etapas anteriores). No entanto, ele ignorará o serviço builder porque ele usa a chave build em vez da chave image. Você não verá nenhuma saída relacionada à construção ou busca (pull) de uma imagem para o serviço builder.
Para confirmar que nenhuma imagem foi construída ou buscada (pulled) para o serviço builder, você pode listar suas imagens Docker.
docker images
Você ainda deve ver apenas as imagens nginx e redis listadas. Não haverá uma nova imagem criada a partir do Dockerfile por este comando.
Isso demonstra como a flag --ignore-buildable permite que você busque (pull) seletivamente apenas imagens pré-construídas, o que pode ser útil em vários cenários de desenvolvimento e implantação.