Gere arquivos Dockerfile prontos para produção para Node.js, Python, Go, Java e Nginx com compilações em múltiplas etapas e ordenação otimizada das camadas.
# Build stage FROM node:20-alpine AS builder WORKDIR /app # Copy dependency manifests first to leverage Docker layer cache COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Production stage FROM node:20-alpine WORKDIR /app RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules ENV NODE_ENV=production EXPOSE 3000 CMD ["node", "dist/index.js"]
.git .gitignore *.md .env .env.* .DS_Store Thumbs.db node_modules npm-debug.log* .npm dist build coverage .nyc_output .eslintcache
Um Dockerfile é um arquivo de texto que define como construir uma imagem de contêiner. A ordem das instruções é importante para a eficiência do cache: as dependências são instaladas antes da cópia do código-fonte, de modo que o Docker reutilize a camada armazenada em cache quando apenas o código do aplicativo for alterado, e não quando as dependências forem alteradas.
Escolha um idioma e uma imagem base, ative ou desative, se desejar, as compilações em várias etapas, defina seus comandos de compilação e inicialização e adicione quaisquer variáveis de ambiente. O gerador segue as melhores práticas de ordenação de camadas e, por padrão, cria um usuário que não seja o root por motivos de segurança.
As compilações em múltiplas etapas geram uma imagem final menor ao separar o ambiente de compilação do ambiente de execução. A etapa de compilação compila o aplicativo, e apenas o artefato compilado é copiado para a etapa de execução enxuta. Isso é especialmente eficaz para aplicativos em Go e Java.