Просмотр исходного кода

fix Dockerfile deps and improve artifact copying

Yuki Takei 1 месяц назад
Родитель
Сommit
a801843740
2 измененных файлов с 30 добавлено и 31 удалено
  1. 13 18
      apps/app/docker-new/Dockerfile
  2. 17 13
      apps/app/docker-new/Dockerfile.dockerignore

+ 13 - 18
apps/app/docker-new/Dockerfile

@@ -16,10 +16,10 @@ WORKDIR $OPT_DIR
 # Install build dependencies
 RUN --mount=type=cache,target=/var/lib/apt,sharing=locked \
     --mount=type=cache,target=/var/cache/apt,sharing=locked \
-  apt-get update && apt-get install -y --no-install-recommends ca-certificates wget
+  apt-get update && apt-get install -y --no-install-recommends ca-certificates gzip wget
 
 # Install pnpm (standalone script, no version hardcoding)
-RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh -
+RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL=/bin/sh sh -
 ENV PNPM_HOME=$PNPM_HOME
 ENV PATH="$PNPM_HOME:$PATH"
 
@@ -57,18 +57,15 @@ RUN turbo run build --filter @growi/app
 RUN pnpm deploy out --prod --filter @growi/app
 RUN rm -rf apps/app/node_modules && mv out/node_modules apps/app/node_modules
 RUN rm -rf apps/app/.next/cache
-RUN tar -zcf /tmp/packages.tar.gz \
-  package.json \
-  apps/app/.next \
-  apps/app/config \
-  apps/app/dist \
-  apps/app/public \
-  apps/app/resource \
-  apps/app/tmp \
-  apps/app/.env.production* \
-  apps/app/next.config.js \
-  apps/app/package.json \
-  apps/app/node_modules
+
+# Stage artifacts into a clean directory for COPY --from
+RUN mkdir -p /tmp/release/apps/app && \
+  cp package.json /tmp/release/ && \
+  cp -a apps/app/.next apps/app/config apps/app/dist apps/app/public \
+       apps/app/resource apps/app/tmp apps/app/next.config.js \
+       apps/app/package.json apps/app/node_modules \
+       /tmp/release/apps/app/ && \
+  (cp apps/app/.env.production* /tmp/release/apps/app/ 2>/dev/null || true)
 
 
 
@@ -82,11 +79,9 @@ ARG OPT_DIR
 ENV NODE_ENV="production"
 ENV appDir="$OPT_DIR/growi"
 
-# Extract artifacts as node user
-USER node
+# Copy artifacts from builder (no shell required)
 WORKDIR ${appDir}
-RUN --mount=type=bind,from=builder,source=/tmp/packages.tar.gz,target=/tmp/packages.tar.gz \
-  tar -zxf /tmp/packages.tar.gz -C ${appDir}/
+COPY --from=builder --chown=node:node /tmp/release/ ${appDir}/
 
 # Copy TypeScript entrypoint
 COPY --chown=node:node apps/app/docker-new/docker-entrypoint.ts /docker-entrypoint.ts

+ 17 - 13
apps/app/docker-new/Dockerfile.dockerignore

@@ -1,7 +1,7 @@
 # Dependencies and build caches
 **/node_modules
-**/.pnpm-store
 **/coverage
+**/.pnpm-store
 **/.next
 **/.turbo
 out
@@ -29,22 +29,26 @@ out
 **/*.md
 !**/README.md
 
-# Environment files (secrets)
-.env
-.env.*
-!.env.production
-!.env.production.local
+# Environment files for local development
+.env.local
+.env.*.local
 
 # Unrelated apps
 apps/slackbot-proxy
-apps/pdf-converter
 
 # CI/CD and config
 .github
-.circleci
-**/.eslintrc*
-**/.prettierrc*
+**/.editorconfig
+**/.markdownlint.yml
+**/.mcp.json
+**/.prettier*
+**/.stylelintrc*
 **/biome.json
-**/tsconfig*.json
-!apps/app/tsconfig*.json
-!packages/*/tsconfig*.json
+**/lefthook.yml
+
+# AI related files
+**/.claude
+**/.kiro
+**/.serena
+**/AGENTS.md
+**/CLAUDE.md