* clean up helpers * shared in it's own top level folder * workspaces setup * build fix * disable workspaces? * run ci * rename job-flow to gradcracker * optional dependencies * formatting? * more optional modules * allow post install runs * node bump * remove post install * add optionals * add more * formatting * comments, but im unsure * run typescript DIRECTLY * better build * camoufox simplification * lint * build process doesn't exist * build fix * lockfile * type check everything, build only for client * rename steps correctly * import from package! * fix formatting * don't fetch twice * fix concern
56 lines
2.0 KiB
Docker
56 lines
2.0 KiB
Docker
# Specify the base Docker image. You can read more about
|
|
# the available images at https://crawlee.dev/docs/guides/docker-images
|
|
# You can also use any other image from Docker Hub.
|
|
FROM apify/actor-node-playwright-chrome:20-1.50.1 AS builder
|
|
|
|
# Copy just package.json and package-lock.json
|
|
# to speed up the build using Docker layer cache.
|
|
COPY --chown=myuser package*.json ./
|
|
|
|
# Install all dependencies with cache mount for faster rebuilds
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm install --include=dev --audit=false --progress=false
|
|
|
|
# Next, copy the source files using the user set
|
|
# in the base image.
|
|
COPY --chown=myuser . ./
|
|
|
|
# Install all dependencies and build the project.
|
|
# Don't audit to speed up the installation.
|
|
RUN npm run build
|
|
|
|
# Create final image
|
|
FROM apify/actor-node-playwright-chrome:20-1.50.1
|
|
|
|
# Copy only built JS files from builder image
|
|
COPY --from=builder --chown=myuser /home/myuser/dist ./dist
|
|
|
|
# Copy just package.json and package-lock.json
|
|
# to speed up the build using Docker layer cache.
|
|
COPY --chown=myuser package*.json ./
|
|
|
|
# Ensure we'll install Camoufox using the npm postinstall script
|
|
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=0
|
|
# Install NPM packages, skip optional and development dependencies to
|
|
# keep the image small. Avoid logging too much and print the dependency
|
|
# tree for debugging
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm --quiet set progress=false \
|
|
&& npm install --omit=dev --progress=false \
|
|
&& echo "Installed NPM packages:" \
|
|
&& (npm list --omit=dev --all || true) \
|
|
&& echo "Node.js version:" \
|
|
&& node --version \
|
|
&& echo "NPM version:" \
|
|
&& npm --version \
|
|
&& npm run get-binaries
|
|
|
|
# Next, copy the remaining files and directories with the source code.
|
|
# Since we do this after NPM install, quick build will be really fast
|
|
# for most source file changes.
|
|
COPY --chown=myuser . ./
|
|
|
|
# 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 && npm run start:prod --silent
|