Skip to content

Commit

Permalink
Merge pull request #487 from jihchi/upgrade_node
Browse files Browse the repository at this point in the history
Upgrade node version in Dockerfile
  • Loading branch information
jihchi authored Mar 1, 2025
2 parents 45bcb61 + 70b1975 commit c62f2b1
Showing 1 changed file with 22 additions and 36 deletions.
58 changes: 22 additions & 36 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,54 +1,40 @@
# based on: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker
FROM docker.io/library/node:18-buster-slim
FROM ghcr.io/puppeteer/puppeteer:24.3.0
LABEL maintainer="Jihchi Lee <[email protected]>"

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install system dependencies
USER root

RUN apt-get update \
&& apt-get -yq upgrade \
&& apt-get install -y curl gnupg \
&& curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& sed -i -e's/ main/ main contrib non-free/g' /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y \
google-chrome-stable \
fonts-ipafont-gothic \
fonts-wqy-zenhei \
fonts-thai-tlwg \
fonts-kacst \
fonts-freefont-ttf \
ttf-mscorefonts-installer \
fonts-noto-cjk \
fonts-noto-color-emoji \
fonts-font-awesome \
libxss1 \
fontconfig \
--no-install-recommends \
&& apt-get install -y --no-install-recommends \
fonts-kacst \
fonts-freefont-ttf \
fonts-noto-cjk \
fonts-noto-cjk-extra \
fonts-noto-color-emoji \
fonts-font-awesome \
&& fc-cache -f -v \
&& apt-get autoremove -y \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /src/*.deb

# node application onbuild
RUN corepack enable
USER pptruser

# Set global npm dependencies in the non-root (pptruser) directory
# https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#global-npm-dependencies
ENV NPM_CONFIG_PREFIX=/home/pptruser/.npm-global
ENV PATH=$PATH:/home/pptruser/.npm-global/bin
RUN mkdir -p /home/pptruser/.npm-global/bin

# Install package manager
RUN corepack enable --install-directory /home/pptruser/.npm-global/bin

# pnpm fetch does require only lockfile
COPY pnpm-lock.yaml ./
COPY package.json pnpm-lock.yaml ./
RUN pnpm fetch --prod

COPY . ./
RUN pnpm install -r --offline --prod

# Add user so we don't need --no-sandbox.
# same layer as npm install to keep re-chowned files from using up several hundred MBs more space
RUN usermod -a -G audio,video node \
&& mkdir -p /home/node/Downloads \
&& chown -R node:node /home/node /usr/src/app/

USER node
RUN corepack pack
CMD ["pnpm", "start"]

EXPOSE 3000

0 comments on commit c62f2b1

Please sign in to comment.