Projeto Final: empacotando uma aplicação
1 min de leitura
Você chegou no fim da trilha de Docker Fundamentos. Hora de juntar tudo - Dockerfile, .dockerignore, build enxuto, multi-stage, volumes e networks - num projeto só.
A missão
Pegue uma aplicação real (qualquer uma - sua ou de exemplo) e empacote-a numa imagem Docker pronta pra produção. Sugestões:
- API Node/Express simples (rotas CRUD em memória) - cobre
Dockerfile básico, build, run com
-p. - App Flask/FastAPI com
requirements.txt- parecido, mas outra stack. - Site estático (Hugo, Next exportado, Astro) - usa Nginx como servidor, multi-stage build com Node pra buildar e Alpine pra servir.
- Script CLI - Dockerfile mínimo, foco em imagem final pequena.
Requisitos mínimos
-
Dockerfile multi-stage quando aplicável (build separado do runtime).
-
.dockerignorepresente e razoável (semnode_modules,.git,.env, etc.). -
Imagem final < 200 MB (use
docker imagespra confirmar). -
Tag fixa (não use
latestem produção). -
Variáveis de ambiente pra tudo que muda entre dev/prod (porta, URL de banco, etc.).
-
HEALTHCHECKno Dockerfile - instrução que diz ao Docker "esse container está saudável". Exemplo:HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost:3000/ || exit 1 -
README com: o que é, como buildar, como rodar, decisões de arquitetura (por que escolheu essa base, esse usuário, etc.).
Critério de "pronto"
docker buildroda sem warnings absurdos.docker runsobe e responde na porta configurada.- A imagem passa de
docker run(sem flags esquisitas) a "rodando em outro host" - é portável. - O
docker history <imagem>mostra layers coerentes (sem 200 MB jogados numa layer única). - O
HEALTHCHECKreporta "healthy" depois de uns 10 segundos (docker psmostra a coluna STATUS).
Publicando (opcional, mas vale muito)
Faça login e publique no Docker Hub pra mostrar que sua imagem funciona de verdade:
docker login
docker tag minha-app:1.0.0 seu-usuario/minha-app:1.0.0
docker push seu-usuario/minha-app:1.0.0
Qualquer pessoa no mundo pode agora rodar docker run seu-usuario/minha-app:1.0.0.
Compartilhe
Poste no LinkedIn, mande pra amigos, abra uma issue no nosso GitHub
com a tag meu-projeto. Mostrar o que você fez - mesmo imperfeito -
é o que mais evolui.
Próximo passo: vá pra trilha de Docker Compose e Workflows - ela pega o que você aprendeu aqui e mostra como orquestrar vários containers juntos (app + banco + cache) com um único arquivo declarativo. Depois disso, Kubernetes te espera.