diff --git a/Dockerfile b/Dockerfile index d47710f..7f608b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,6 @@ # ================================================================ FROM node:20-slim AS builder -# pnpmの準備 ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable @@ -22,13 +21,12 @@ COPY packages/shared ./packages/shared COPY apps/server ./apps/server -# 4. ビルド(共通ライブラリ -> サーバーの順) +# 4. ビルド RUN pnpm --filter @repo/shared build RUN pnpm --filter server build -# 5. 開発用ライブラリを削除(本番に必要なものだけ残す) -ENV CI=true -RUN pnpm prune --prod +# 5. pnpm deploy を使用して、serverアプリを /app/out に独立させる(--prodで本番環境用のみ抽出) +RUN pnpm --filter server --prod deploy /app/out # ================================================================ # Stage 2: Runner (実行専用の軽量環境) @@ -37,18 +35,12 @@ WORKDIR /app -# Builderステージから、動かすのに必要なファイルだけをコピー -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/apps/server/node_modules ./apps/server/node_modules -COPY --from=builder /app/apps/server/dist ./apps/server/dist -COPY --from=builder /app/apps/server/package.json ./apps/server/ -COPY --from=builder /app/packages/shared/dist ./packages/shared/dist -COPY --from=builder /app/packages/shared/package.json ./packages/shared/ +# Builderステージで抽出した独立環境(/app/out)をそのままコピーするだけ +COPY --from=builder /app/out ./ # 実行環境の設定 ENV NODE_ENV=production USER node # サーバーを起動 -WORKDIR /app/apps/server CMD ["node", "dist/index.js"] \ No newline at end of file