| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- ########################################################################
- # deps-resolver
- ########################################################################
- FROM node:20-slim AS deps-resolver
- WORKDIR /app
- COPY package.json yarn.lock ./
- RUN yarn --frozen-lockfile
- RUN tar -cf node_modules.tar \
- node_modules \
- && rm -rf node_modules
- ########################################################################
- # deps-resolver-prod
- ########################################################################
- FROM deps-resolver AS deps-resolver-prod
- WORKDIR /app
- RUN yarn --production
- RUN tar -cf node_modules.tar \
- node_modules \
- && rm -rf node_modules
- ########################################################################
- # builder
- ########################################################################
- FROM node:20-slim AS builder
- WORKDIR /app
- COPY package.json yarn.lock tsconfig.json tsconfig.build.json .eslintrc.js ./
- COPY src ./src
- COPY --from=deps-resolver /app/node_modules.tar ./
- RUN tar -xf node_modules.tar \
- && rm node_modules.tar \
- && yarn build \
- && tar -cf packages.tar \
- package.json \
- yarn.lock \
- dist \
- && rm -rf node_modules
- ########################################################################
- # production
- ########################################################################
- FROM node:20-slim
- ENV NODE_ENV=production
- ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
- ENV LANG=ja_JP.UTF-8
- RUN apt-get update && apt-get install -y tini chromium locales fonts-ipafont fonts-ipaexfont fonts-ipafont-gothic fonts-ipafont-mincho && apt-get clean \
- && rm -rf /var/lib/apt/lists/* \
- && echo "ja_JP UTF-8" > /etc/locale.gen && locale-gen
- USER node
- WORKDIR /app
- COPY --from=deps-resolver-prod --chown=node:node \
- /app/node_modules.tar ./
- COPY --from=builder --chown=node:node \
- /app/packages.tar ./
- RUN tar -xf node_modules.tar \
- && tar -xf packages.tar \
- && rm node_modules.tar packages.tar
- # change permission for shared volume
- RUN mkdir -p /tmp/page-bulk-export && chmod -R 777 /tmp/page-bulk-export
- EXPOSE 3010
- ENTRYPOINT ["/usr/bin/tini", "-e", "143", "--"]
- CMD ["node", "dist/index.js"]
|