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

use pnpm deploy instead of turbo prune

Yuki Takei 1 год назад
Родитель
Сommit
e141fab051
1 измененных файлов с 20 добавлено и 85 удалено
  1. 20 85
      apps/slackbot-proxy/docker/Dockerfile

+ 20 - 85
apps/slackbot-proxy/docker/Dockerfile

@@ -1,112 +1,51 @@
-# syntax = docker/dockerfile:1.4
+# syntax = docker/dockerfile:1
 
 ##
 ## base
 ##
 FROM node:20-slim AS base
 
-ENV optDir /opt
+ENV optDir="/opt"
 
 WORKDIR ${optDir}
 
 # install pnpm
 RUN apt-get update && apt-get install -y ca-certificates wget --no-install-recommends \
   && wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh -
-ENV PNPM_HOME "/root/.local/share/pnpm"
-ENV PATH "$PNPM_HOME:$PATH"
+ENV PNPM_HOME="/root/.local/share/pnpm"
+ENV PATH="$PNPM_HOME:$PATH"
 
 # install turbo
 RUN pnpm add turbo --global
 
 
 
-##
-## partialrepos
-##
-FROM base AS partialrepos
-
-ENV optDir /opt
-
-WORKDIR ${optDir}
-
-COPY . .
-RUN turbo prune @growi/slackbot-proxy --docker
-
-
-
-##
-## deps-resolver
-##
-FROM base AS deps-resolver
-
-ENV optDir /opt
-
-WORKDIR ${optDir}
-
-# copy files
-COPY --from=partialrepos ${optDir}/out/json/ .
-COPY --from=partialrepos ${optDir}/out/pnpm-lock.yaml ./pnpm-lock.yaml
-
-RUN pnpm add node-gyp --global
-RUN pnpm install --no-frozen-lockfile
-
-# make artifacts
-RUN tar -cf node_modules.tar \
-  node_modules \
-  apps/*/node_modules \
-  packages/*/node_modules
-
-
-
-##
-## deps-resolver-prod
-##
-FROM deps-resolver AS deps-resolver-prod
-
-RUN pnpm install --no-frozen-lockfile --prod
-# make artifacts
-RUN tar -zcf node_modules.tar.gz \
-  node_modules \
-  apps/*/node_modules \
-  packages/*/node_modules
-
-
-
 ##
 ## builder
 ##
 FROM base AS builder
 
-ENV optDir /opt
+ENV optDir="/opt"
 
 WORKDIR ${optDir}
 
-RUN yarn global add turbo
-
-# copy files
-COPY --from=partialrepos ${optDir}/out/full/ .
-COPY --from=partialrepos ${optDir}/out/pnpm-lock.yaml ./pnpm-lock.yaml
-COPY ["tsconfig.base.json", "./"]
-
-# copy dependent packages
-COPY --from=deps-resolver \
-  ${optDir}/node_modules.tar ${optDir}/
+COPY . .
 
-# extract node_modules.tar
-RUN tar -xf node_modules.tar
-RUN rm node_modules.tar
+RUN pnpm add node-gyp --global
+RUN pnpm install ---frozen-lockfile
 
 # build
-RUN turbo run build
+RUN turbo run build --filter @growi/slackbot-proxy
 
 # make artifacts
+RUN pnpm --filter @growi/slackbot-proxy --prod deploy pruned
+RUN rm -rf apps/slackbot-proxy/node_modules && mv pruned/node_modules apps/slackbot-proxy/node_modules
 RUN tar -zcf packages.tar.gz \
   package.json \
-  apps/*/package.json \
-  apps/*/dist \
-  apps/*/.env \
-  packages/*/package.json \
-  packages/*/dist
+  apps/slackbot-proxy/package.json \
+  apps/slackbot-proxy/dist \
+  apps/slackbot-proxy/.env \
+  apps/slackbot-proxy/node_modules
 
 
 
@@ -114,25 +53,21 @@ RUN tar -zcf packages.tar.gz \
 ## release
 ##
 FROM node:20-slim
-LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
+LABEL maintainer="Yuki Takei <yuki@weseek.co.jp>"
 
-ENV NODE_ENV production
+ENV NODE_ENV="production"
 
-ENV optDir /opt
-ENV appDir ${optDir}/slackbot-proxy
+ENV optDir="/opt"
+ENV appDir="${optDir}/slackbot-proxy"
 
 # copy artifacts
-COPY --from=deps-resolver-prod --chown=node:node \
-  ${optDir}/node_modules.tar.gz ${appDir}/
 COPY --from=builder --chown=node:node \
   ${optDir}/packages.tar.gz ${appDir}/
 
 # extract artifacts as 'node' user
 USER node
 WORKDIR ${appDir}
-RUN tar -xf node_modules.tar.gz \
-  && tar -xf packages.tar.gz \
-  && rm node_modules.tar.gz packages.tar.gz
+RUN tar -xf packages.tar.gz && rm packages.tar.gz
 
 WORKDIR ${appDir}/apps/slackbot-proxy