Best Practices 2025
本番環境で安全かつ軽量にコンテナを運用するための鉄則。
1. Multi-Stage Builds (マルチステージビルド)
ビルド環境(Node.jsなど)と実行環境(Nginxなど)を分けることで、イメージサイズを劇的に小さくします。
# Build StageFROM node:20-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY . .RUN npm run build
# Production StageFROM nginx:alpine# Copy only built assets from builder stageCOPY --from=builder /app/dist /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]2. Security Checklist (Rootless)
- 🛡️ Don't run as root: コンテナ内で `USER` 指定を忘れない。
- 🔒 Read-Only Root Filesystem: 可能な限り書き込みを禁止する(`--read-only`)。
- 📦 Minimal Base Images: `alpine` や `distroless` を使い、攻撃面を減らす。
- 🚫 No Secrets in Env: 環境変数にパスワードを書かない(`docker secret` を使う)。