1001Ferramentas
🐳Dev

Gerador de Dockerfile

Monte um Dockerfile a partir de templates comuns: Node, Python, Go, Static Nginx, com multi-stage opcional, healthcheck e usuário não-root. Tudo no navegador.

Monte um Dockerfile a partir de templates

Escrever um Dockerfile do zero te obriga a lembrar a imagem base certa, a ordem das camadas e as boas práticas de segurança. Este gerador parte de templates já testados para as stacks mais comuns, Node, Python, Go e site estático com Nginx, e monta o arquivo no seu lugar.

Todos os templates já saem com as práticas que separam um Dockerfile amador de um profissional: execução com usuário não-root, dependências instaladas antes do código para aproveitar o cache de camadas e imagem base enxuta. O controle que fica com você é o build multi-stage, que encolhe a imagem final e vale para o template Node — Go já é sempre de dois estágios e Nginx, de um só.

A geração roda no navegador e o arquivo já sai pronto para copiar na raiz do projeto. Em vez de encarar uma página em branco, você começa de um ponto de partida sólido.

Perguntas frequentes

Onde eu ligo o HEALTHCHECK?
Em lugar nenhum: a página tem só três controles, o template, a versão base e a caixa de multi-stage. Nenhum dos quatro Dockerfiles gerados traz instrução HEALTHCHECK, então, se o seu orquestrador depende disso, acrescente a linha à mão, algo como HEALTHCHECK --interval=30s CMD wget -qO- http://localhost:3000/ || exit 1. Já o usuário não-root vem sempre ligado, sem opção: USER node no template de Node e um usuário app criado nos de Python e Go.
Desmarquei o multi-stage e o Dockerfile do Python continuou igual. É bug?
É o comportamento atual: a caixa de multi-stage só tem efeito no template de Node. O de Go já sai sempre em dois estágios, compilando na imagem golang e copiando o binário para uma alpine:3 enxuta; o de Python é sempre de estágio único, e o de site estático com Nginx também. Marcar ou desmarcar a caixa com qualquer template que não seja Node não muda uma linha da saída.
A versão base vale para todos os templates?
Vale para Node, Python e Go, mas o valor não é validado nem reajustado quando você troca de template, e é aí que mora a armadilha. O campo começa em 20, que faz sentido para node:20-alpine; se você mudar para Python sem tocar nele, a saída vira python:20-slim, uma imagem que não existe. Troque para 3.12, ou para 1.22 no caso do Go. No template de site estático o campo é ignorado por completo: a imagem é sempre nginx:alpine.

Ferramentas Relacionadas