# Base image with Playwright
FROM apify/actor-node-playwright-chrome:20 AS builder
# Install pnpm
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.bashrc" SHELL="$(which bash)" bash -
# Use the shell form of RUN to source the .bashrc file before running pnpm
SHELL ["/bin/bash", "-c", "source /home/myuser/.bashrc"]
# Check preinstalled packages
RUN pnpm ls crawlee apify puppeteer playwright
# Copy package files first to optimize caching
COPY package*.json ./
# Install dependencies
RUN pnpm install --frozen-lockfile --audit=false
# Copy source code
COPY . ./
# Ensure correct permissions
RUN chown -R myuser:myuser .
# Build the project
RUN pnpm run build
# Final runtime image
FROM apify/actor-node-playwright-chrome:20 AS runner
# Install pnpm
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="/home/myuser/.bashrc" SHELL="$(which bash)" bash -
# Use the shell form of RUN to source the .bashrc file before running pnpm
SHELL ["/bin/bash", "-c", "source /home/myuser/.bashrc"]
# Copy built application from builder
COPY --from=builder /home/myuser /home/myuser
# Set up user and working directory
USER myuser
WORKDIR /home/myuser
# Install dependencies
RUN pnpm install --frozen-lockfile --audit=false
# Run the image. If you know you won't need headful browsers,
# you can remove the XVFB start script for a micro perf gain.
CMD ./start_xvfb_and_run_cmd.sh && pnpm run start:prod --silent
# Base image with Playwright
FROM apify/actor-node-playwright-chrome:20 AS builder
# Install pnpm
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.bashrc" SHELL="$(which bash)" bash -
# Use the shell form of RUN to source the .bashrc file before running pnpm
SHELL ["/bin/bash", "-c", "source /home/myuser/.bashrc"]
# Check preinstalled packages
RUN pnpm ls crawlee apify puppeteer playwright
# Copy package files first to optimize caching
COPY package*.json ./
# Install dependencies
RUN pnpm install --frozen-lockfile --audit=false
# Copy source code
COPY . ./
# Ensure correct permissions
RUN chown -R myuser:myuser .
# Build the project
RUN pnpm run build
# Final runtime image
FROM apify/actor-node-playwright-chrome:20 AS runner
# Install pnpm
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="/home/myuser/.bashrc" SHELL="$(which bash)" bash -
# Use the shell form of RUN to source the .bashrc file before running pnpm
SHELL ["/bin/bash", "-c", "source /home/myuser/.bashrc"]
# Copy built application from builder
COPY --from=builder /home/myuser /home/myuser
# Set up user and working directory
USER myuser
WORKDIR /home/myuser
# Install dependencies
RUN pnpm install --frozen-lockfile --audit=false
# Run the image. If you know you won't need headful browsers,
# you can remove the XVFB start script for a micro perf gain.
CMD ./start_xvfb_and_run_cmd.sh && pnpm run start:prod --silent