Создавайте готовые к развертыванию файлы Dockerfile для Node.js, Python, Go, Java и Nginx с использованием многоэтапной сборки и оптимизированного порядка слоев.
# 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
Dockerfile - это текстовый файл, в котором определяется порядок сборки образа контейнера. Порядок инструкций важен для эффективности кэширования: зависимости устанавливаются до копирования исходного кода, благодаря чему Docker повторно использует кэшированный слой, когда изменяется только код приложения, а не при изменении зависимостей.
Выберите язык и исходное изображение, при необходимости включите или отключите многоэтапную сборку, задайте команды сборки и запуска, а также добавьте любые переменные среды. Генератор обеспечивает соблюдение рекомендуемого порядка расположения слоев и по умолчанию создает пользователя, не являющегося root, в целях безопасности.
Многоэтапная сборка позволяет получить конечный образ меньшего размера за счет отделения среды сборки от среды выполнения. На этапе сборки происходит компиляция приложения, и в этап «Lean Runtime» копируется только скомпилированный артефакт. Это особенно эффективно для приложений на Go и Java.