Este guia descreve como construir e executar a aplicação Angular em um container Docker com Nginx.
- Docker instalado
- Docker Compose instalado (opcional, mas recomendado)
docker build -t sample-auth-guards:latest .docker-compose up -dA aplicação estará disponível em: http://localhost
Para parar o container:
docker-compose downdocker run -d -p 4200:80 --name oauth2-client-frontend-angular-app:latestA aplicação estará disponível em: http://localhost
Para parar o container:
docker stop sample-auth-guards
docker rm sample-auth-guardsSe você quiser usar uma porta diferente da 80:
docker run -d -p 8080:80 --name sample-auth-guards sample-auth-guards:latestA aplicação estará disponível em: http://localhost:8080
docker logs sample-auth-guardsPara seguir os logs em tempo real:
docker logs -f sample-auth-guardsO Dockerfile usa um build multi-stage:
-
Stage 1 (Builder):
- Usa imagem
node:20-alpine - Instala dependências com
npm ci - Executa o build do Angular
- Resultado: artefatos em
dist/sample-auth-guards/browser
- Usa imagem
-
Stage 2 (Runtime):
- Usa imagem
nginx:1.27-alpine(menor e mais rápida) - Copia apenas os artefatos do build
- Configura Nginx para servir a SPA
- Usa imagem
Vantagem: A imagem final contém apenas o Nginx e os artefatos compilados, sem Node.js ou código-fonte.
O arquivo nginx.conf é otimizado para servir Single Page Applications (SPAs):
- SPA Routing: Usa
try_filespara redirecionar rotas desconhecidas paraindex.html - Cache:
- Arquivos com hash (.js, .css) têm cache de 1 ano
- index.html não é cacheado
- Compressão Gzip: Ativada automaticamente para reduzir tamanho
- Security Headers: Adiciona headers de segurança ao HTML
- Suporte a Large Files: Permite até 20MB em upload
Se receber erro durante o build docker, tente:
docker build --no-cache -t sample-auth-guards:latest .Se a porta 80 estiver em uso, use uma porta diferente:
docker run -d -p 8080:80 --name sample-auth-guards sample-auth-guards:latestVerifique os logs:
docker logs sample-auth-guards- Este Dockerfile é otimizado para PRODUÇÃO
- Para desenvolvimento, continue usando
npm start - O Dockerfile não inclui source maps em produção (para segurança)
Edite docker-compose.yml e altere a porta em ports:
ports:
- "8080:80" # Nova portaEdite o Dockerfile, linha FROM nginx:...:
FROM nginx:1.27-alpine # Altere a versão aquiEdite docker-compose.yml e adicione em environment:
environment:
- NODE_ENV=production
- CUSTOM_VAR=valuePara publicar em Docker Hub:
docker tag sample-auth-guards:latest seu-usuario/sample-auth-guards:latest
docker push seu-usuario/sample-auth-guards:latest