Dockerコンテナの最適化
Dockerコンテナのサイズを小さく保つことで、ビルド時間とデプロイ時間を短縮できます。
マルチステージビルド
dockerfile
# ビルドステージ
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
# 実行ステージ
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["npm", "start"].dockerignoreの活用
node_modules
.git
*.md
.envAlpine Linuxの使用
dockerfile
FROM node:18-alpine
# Alpineは軽量なLinuxディストリビューションレイヤーの最適化
- 変更頻度の高いファイルを後でCOPY
- RUNコマンドをまとめてレイヤー数を減らす
- キャッシュを活用
セキュリティ
- 非rootユーザーで実行
- 不要なパッケージを削除
- 脆弱性スキャンを実施
最適化されたコンテナは開発効率を大幅に向上させます。