DEV Community

Cover image for Docker Build Checks: Validando seus Dockerfiles antes dos Builds
Rafael Pazini
Rafael Pazini

Posted on

Docker Build Checks: Validando seus Dockerfiles antes dos Builds

Em um mundo onde a eficiência e a segurança no desenvolvimento de software são cruciais, a Docker continua a inovar e fornecer ferramentas que simplificam esses processos. Uma das novidades mais interessantes é o Docker Build Checks, uma funcionalidade que visa garantir a integridade e a qualidade das imagens Docker antes de serem implantadas em ambientes de produção.

O que é o Docker Build Checks?

O Docker Build Checks é uma ferramenta que realiza verificações automáticas durante o processo de build de uma imagem Docker.

Imagina só: ele detecta problemas que podem comprometer a segurança, eficiência e conformidade das suas imagens antes de irem para produção. Ao incorporar essas checagens no pipeline de build, os desenvolvedores podem identificar e corrigir problemas antecipadamente, economizando tempo e recursos a longo prazo.

Funcionalidades Principais

Verificações de Segurança: O Docker Build Checks pode identificar vulnerabilidades conhecidas em pacotes de software incluídos na imagem. Isso ajuda a garantir que a imagem não esteja exposta a falhas de segurança que poderiam ser exploradas por atacantes.

Conformidade com Melhores Práticas: A ferramenta verifica se a imagem segue as melhores práticas de construção de imagens Docker. Isso inclui a otimização do tamanho da imagem, a minimização do uso de privilégios de root e a garantia de que as camadas da imagem estão corretamente organizadas.

Eficiência e Performance: Verificações de eficiência ajudam a garantir que a imagem seja construída de maneira a otimizar o uso de recursos. Isso pode incluir a identificação de arquivos desnecessários ou duplicados e a recomendação de práticas que acelerem o tempo de build e reduzam o tamanho final da imagem.

Teste seus builds locais

Uma ótima dica, é rodar isso localmente e conseguir validar um novo Dockerfile ou as atualizações que você fez nele.
Agora com o docker build . recebemos os Warnings (ou erros que foi a forma que configurei o meu Dockerfile) durante o processo do build:

Docker displaying warnings during builds

Validando os builds de uma forma mais rápida

Validar essas informações durante o build é ótimo, mas as vezes dependendo da complexidade dele pode demorar muito. Que tal apenas verificar nosso Dockerfile sem buildar a imagem completa? É ai que entra a nova função do check --check. Assim fazemos apenas uma checagem do Dockerfile ao invés de fazer o build completo.

$ docker build --check .
Enter fullscreen mode Exit fullscreen mode

Um detalhe importante é que a flag check pode ser colocada em qualquer lugar, por exemplo ao final também funcionará:

$ docker build . --check
Enter fullscreen mode Exit fullscreen mode

Docker only checking the warnings for Dockerfile

Validando os builds durante o CI

Por default, o build check não vai quebrar seu build. Mas para que seu pipeline do CI pare caso encontre algum erro devemos adicionar essas anotações no Dockerfile.

# syntax=docker/dockerfile:1
# check=skip=none;error=true

FROM golang:1.22-alpine AS build
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0  \
    GOOS=linux  \
    go build -a -installsuffix cgo -o test-api /app/cmd/main.go
Enter fullscreen mode Exit fullscreen mode

Configurações

Para essas anotações, você tem a flexibilidade de configura-las da forma que quiser - um chute do Rafa aqui é que logo menos teremos um arquivo de config assim como temos nos lints :)

Enquanto essa funcionalidade não chega, podemos configurar o skip com skip=all or skip=none, e também ligar ou desligar algumas configurações do check. A seguir coloquei um exemplo fazendo o skip do check do as que esta em minúsculo e o correto seria todo maiúsculo, o FromAsCasing:

# syntax=docker/dockerfile:1
# check=skip=FromAsCasing;error=true

FROM golang:1.22-alpine as build
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0  \
    GOOS=linux  \
    go build -a -installsuffix cgo -o test-api /app/cmd/main.go
Enter fullscreen mode Exit fullscreen mode

Aqui esta o link de todas as configurações disponíveis para esses checks.

Conclusão

O Build Checks é uma adição irada ao arsenal do Docker. Com ele, você tem uma maneira automatizada e eficiente de garantir a integridade, segurança e qualidade das suas imagens Docker. Incorporar essas verificações ao seu pipeline de desenvolvimento significa software mais seguro e confiável, além de economizar tempo e recursos.

Se você ainda não testou o Docker Build Checks, está perdendo tempo! Dá uma olhada e veja como ele pode melhorar seu fluxo de trabalho. Para mais detalhes, confira a documentação oficial no site da Docker.

E deixe seus comentários caso eu consiga ajudar em algo :D

Top comments (0)