Desenvolvimento

Linter de Dockerfile

Analise seu Dockerfile em busca de boas práticas, problemas de segurança e oportunidades de otimização, com feedback instantâneo e sugestões práticas.

Uso gratuito Sem cadastro Funciona no navegador

Área da ferramenta

2 errors 10 warnings 3 info
Line 1DL3007ERROR

Using `latest` tag in FROM (image: ubuntu:latest)

Pin a specific version tag, e.g. ubuntu:22.04 instead of ubuntu:latest.

Line 8DL3020ERROR

ADD used where COPY would suffice

Use COPY instead of ADD for copying local files. ADD has extra features (auto-extract, remote URLs) that can be surprising.

Line 2DL4000WARNING

MAINTAINER is deprecated

Use LABEL maintainer="[email protected]" instead.

Line 5DL3015WARNING

Using `apt-get install` without `--no-install-recommends`

Add --no-install-recommends to avoid installing unnecessary packages and reduce image size.

Line 6DL3014WARNING

Using `apt-get install` without `-y` flag

Add -y flag to avoid interactive prompts: apt-get install -y.

Line 6DL3015WARNING

Using `apt-get install` without `--no-install-recommends`

Add --no-install-recommends to avoid installing unnecessary packages and reduce image size.

Line 6DL3009WARNING

Missing `apt-get clean` or `rm -rf /var/lib/apt/lists/*` after install

Clean up apt cache in the same RUN layer to reduce image size.

Line 11DL3004WARNING

Using `sudo` in Dockerfile

Avoid sudo. Use USER to switch users, or run commands as root directly (default in Docker).

Line 13DL3011WARNING

EXPOSE with no port number

Specify a valid port number, e.g. EXPOSE 8080.

Line 15DL3006WARNING

Missing HEALTHCHECK instruction

Add a HEALTHCHECK to let Docker know how to check that the container is still working.

Line 15DL3002WARNING

Running as root — no USER instruction found

Add a USER instruction to run the container as a non-root user for better security.

Line 15DL3025WARNING

CMD uses shell form instead of exec form

Use exec form: CMD ["executable", "arg1", "arg2"] for proper signal handling.

Line 1DL3005INFO

Consider using a .dockerignore file

A .dockerignore file helps exclude unnecessary files from the build context, speeding up builds and reducing image size.

Line 4DL3003INFO

4 consecutive RUN instructions found

Combine RUN instructions using && to reduce image layers.

Line 9DL3000INFO

WORKDIR should use an absolute path

Use an absolute path, e.g. WORKDIR /app instead of WORKDIR app.

O que é um linter de Dockerfile?

Um linter de Dockerfile é uma ferramenta de análise estática que examina as instruções do seu Dockerfile e sinaliza possíveis problemas. Ele verifica erros comuns, vulnerabilidades de segurança, como execução como root, sintaxe obsoleta, camadas ineficientes, ausência de health checks e tags de imagens base sem versão fixada. Assim como ferramentas como o Hadolint, ele fornece feedback classificado por severidade e sugestões objetivas para ajudar você a criar imagens de contêiner menores, mais seguras e fáceis de manter.

Como usar o Linter de Dockerfile

  1. 1Cole o conteúdo do Dockerfile na área de texto.
  2. 2O linter analisa automaticamente cada instrução e exibe uma lista categorizada de resultados.
  3. 3Cada resultado inclui o número da linha, o nível de severidade (erro, aviso ou informação), o ID da regra, uma descrição e uma sugestão de correção.
  4. 4Confira os totais no topo e corrija primeiro os erros, depois os avisos e, por fim, as recomendações informativas.

Casos de uso comuns

Auditoria antes do push

Audite Dockerfiles antes de enviá-los a um registro de contêineres para identificar problemas antecipadamente.

Boas práticas de CI/CD

Aplique boas práticas de Dockerfile em pipelines de CI/CD para manter a qualidade das imagens consistente.

Aprendizado de Docker

Aprenda boas práticas de Docker com feedback em tempo real e sugestões práticas aplicadas aos seus próprios Dockerfiles.

Revisão de código

Revise Dockerfiles durante code reviews para identificar problemas de segurança, oportunidades de otimização e sintaxe obsoleta.

Perguntas frequentes

Quais regras o linter de Dockerfile verifica?

O linter verifica mais de 15 regras em três níveis de severidade: erros (ausência de FROM, tag latest, ADD em vez de COPY e CMD duplicado), avisos (flags de apt-get, uso de sudo, MAINTAINER obsoleto, ausência de HEALTHCHECK ou USER e CMD em shell form) e informações (combinação de camadas RUN, .dockerignore e caminhos absolutos em WORKDIR).

Este linter equivale ao Hadolint?

A ferramenta cobre as regras mais comuns e relevantes do Hadolint em uma interface executada no navegador, sem exigir instalação. Para uma análise abrangente em CI/CD, considere usar o Hadolint junto com esta ferramenta para verificações rápidas.

Por que devo fixar a versão da imagem base?

Usar latest ou uma imagem base sem tag pode fazer com que os builds falhem inesperadamente quando a imagem upstream for atualizada. Fixar uma versão específica, como node:20-alpine, garante builds reproduzíveis e previsíveis.

Por que executar como root em um contêiner representa um risco de segurança?

Executar como root dentro de um contêiner aumenta a superfície de ataque. Se alguém comprometer a aplicação, terá privilégios de root no contêiner, o que pode tornar escapes de contêiner mais perigosos. Adicionar uma instrução USER reduz esse risco.

O conteúdo do meu Dockerfile é enviado a algum servidor?

Não. A análise é executada localmente no navegador, e o conteúdo do Dockerfile não é enviado a servidores.