# syntax=docker/dockerfile:1 # Build stage: install dependencies and build dist assets using gulp FROM node:22.22.3-alpine3.23 AS builder WORKDIR /app # Install project dependencies (including gulp and related dev tools) COPY package.json ./ RUN npm install # Copy the rest of the repository COPY . . # Build the JS and CSS assets (avoid gulp default watch in production) RUN npx gulp js RUN npx gulp css # Include a minimal static page for convenience and to ensure assets exist in dist RUN mkdir -p dist && cp index.html dist/index.html # Copy assets needed by the static site into dist so fonts/images load correctly RUN cp -r assets/fonts dist/fonts RUN cp -r assets/images dist/assets/images # Runtime stage: serve the built dist with a tiny static server FROM node:22.22.3-alpine3.23 WORKDIR /app # Bring built artifacts from the builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/index.html /app/dist/index.html # Install a small HTTP server to serve the static assets RUN npm install -g http-server EXPOSE 8080 # Start the static server serving the built dist directory CMD ["http-server", "dist", "-p", "8080"]
# Exclude repository metadata and dependencies from the image build context .git node_modules bower_components dist npm-debug.log* yarn-error.log* yarn.lock Dockerfile .dockerignore
Failing step (docker build): - Step: [builder 4/10] RUN npm install - Exit code: 1 Exact error messages (preserved): - PhantomJS not found on PATH - Phantom installation failed TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined - at Object.join (node:path:1354:7) - at findSuitableTempDirectory (/app/node_modules/phantomjs/install.js:127:30) - at /app/node_modules/phantomjs/install.js:476:19 - Command attempted: sh -c node install.js - npm error path /app/node_modules/phantomjs - A complete log of this run can be found in: /root/.npm/_logs/2026-05-16T17_52_12_017Z-debug-0.log Missing packages/files mentioned: - PhantomJS not found on PATH; phantomjs installation fails due to an invalid path type (TypeError: The "path" argument must be of type string. Received undefined). This indicates the phantomjs package could not install because a required path value is undefined during install. Version/mismatch information: - Base image uses Node 22.22.3 on Alpine 3.23 (docker image: node:22.22.3-alpine3.23). - npm indicates a newer major version is available: 10.9.8 -> 11.14.1 Summary: The build fails while running npm install due to PhantomJS installation failing with a TypeError (invalid path argument) and PhantomJS not found on PATH. This stops the build with exit code 1.
# syntax=docker/dockerfile:1 # Build stage: install dependencies and build dist assets using gulp FROM node:22.22.3-bullseye-slim AS builder WORKDIR /app # Install project dependencies (including gulp and related dev tools) COPY package.json ./ RUN npm install # Copy the rest of the repository COPY . . # Build the JS and CSS assets (avoid gulp default watch in production) RUN npx gulp js RUN npx gulp css # Include built assets and ensure dist exists RUN mkdir -p dist && cp index.html dist/index.html RUN mkdir -p dist/fonts dist/assets/images RUN cp -r assets/fonts/* dist/fonts/ RUN cp -r assets/images/* dist/assets/images/ # Runtime stage: serve the built dist with a tiny static server FROM node:22.22.3-bullseye-slim WORKDIR /app # Bring built artifacts from the builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/index.html /app/index.html # Install a small HTTP server to serve the static assets RUN apt-get update && apt-get install -y --no-install-recommends bash ca-certificates && rm -rf /var/lib/apt/lists/* RUN npm install -g http-server EXPOSE 8080 # Start the static server serving the built dist directory CMD ["http-server", "dist", "-p", "8080"]
Summary of Docker build error (preserving requested details)
- Failing step: [builder 4/11] RUN npm install (Dockerfile: line 10)
- Exact error message and exit code:
- npm error code 1
- npm error path /app/node_modules/phantomjs
- npm error command failed
- npm error command sh -c node install.js
- npm error PhantomJS not found on PATH
- npm error Phantom installation failed TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
- Stack (partial):
at Object.join (node:path:1354:7)
at findSuitableTempDirectory (/app/node_modules/phantomjs/install.js:127:30)
at /app/node_modules/phantomjs/install.js:476:19
at nextTickCallback (/app/node_modules/kew/kew.js:47:28)
at process.processTicksAndRejections (node:internal/process/task_queues:84:11)
- Missing packages or files mentioned:
- PhantomJS not found on PATH
- PhantomJS installation failing during npm install
- Version mismatch / notices:
- npm notice New major version of npm available! 10.9.8 -> 11.14.1
- Additional context:
- A complete log of this run can be found in: /root/.npm/_logs/2026-05-16T17_54_29_558Z-debug-0.log# syntax=docker/dockerfile:1 # Build stage: install dependencies and build dist assets using gulp FROM node:22.22.3-bullseye-slim AS builder WORKDIR /app # Install project dependencies (including gulp and related dev tools) COPY package.json ./ RUN npm install --no-optional # Copy the rest of the repository COPY . . # Build the JS and CSS assets (avoid gulp default watch in production) RUN npx gulp js RUN npx gulp css # Include built assets and ensure dist exists RUN mkdir -p dist && cp index.html dist/index.html RUN mkdir -p dist/fonts dist/assets/images RUN cp -r assets/fonts/* dist/fonts/ RUN cp -r assets/images/* dist/assets/images/ # Runtime stage: serve the built dist with a tiny static server FROM node:22.22.3-bullseye-slim WORKDIR /app # Bring built artifacts from the builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/index.html /app/index.html # Install a small HTTP server to serve the static assets RUN apt-get update && apt-get install -y --no-install-recommends bash ca-certificates && rm -rf /var/lib/apt/lists/* RUN npm install -g http-server EXPOSE 8080 # Start the static server serving the built dist directory CMD ["http-server", "dist", "-p", "8080"]
Summary (under 1500 chars): - Failing step: [builder 4/11] RUN npm install --no-optional (Dockerfile:10) - Exit code: 1 - Failing command/step: npm install --no-optional - Exact error message and related output: - npm error code 1 - npm error path /app/node_modules/phantomjs - npm error command failed - npm error command sh -c node install.js - PhantomJS not found on PATH - Phantom installation failed TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined - at Object.join (node:path:1354:7) - at findSuitableTempDirectory (/app/node_modules/phantomjs/install.js:127:30) - at /app/node_modules/phantomjs/install.js:476:19 - processTicksAndRejections stack lines follow - A complete log of this run can be found in: /root/.npm/_logs/2026-05-16T17_56_32_508Z-debug-0.log - Missing packages/files mentioned: - PhantomJS (not found on PATH) leading to phantomjs install failure - Version mismatch/info: - Base image: node:22.22.3-bullseye-slim - npm note: New major version available (10.9.8 -> 11.14.1) referenced in output - Deprecation warnings are present but not detailed here; the critical failure is PhantomJS installation during npm install.
# syntax=docker/dockerfile:1 # Build stage: install dependencies and build dist assets using gulp FROM node:22.22.3-alpine3.23 AS builder WORKDIR /app # Install project dependencies (excluding build-time scripts that may fail on PhantomJS) COPY package.json ./ RUN npm install --ignore-scripts --no-audit --no-fund # Copy the rest of the repository COPY . . # Build the JS and CSS assets (avoid gulp default watch in production) RUN npx gulp js RUN npx gulp css # Include built assets and ensure dist exists RUN mkdir -p dist/fonts dist/assets/images RUN cp -r assets/fonts/. dist/fonts/ RUN cp -r assets/images/. dist/assets/images/ # Runtime stage: serve the built dist with a tiny static server FROM node:22.22.3-alpine3.23 WORKDIR /app # Bring built artifacts from the builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/index.html /app/index.html # Install a small HTTP server to serve the static assets RUN apk add --no-cache bash RUN npm install -g http-server EXPOSE 8080 # Start the static server serving the built dist directory CMD ["http-server", "dist", "-p", "8080"]
- Exact error message and exit code - ReferenceError: primordials is not defined - fs.js:44 } = primordials; ^ ReferenceError: primordials is not defined at fs.js:44:5 at req_ (/app/node_modules/natives/index.js:143:24) at Object.req [as require] (/app/node_modules/natives/index.js:55:10) at Object.<anonymous> (/app/node_modules/vinyl-fs/node_modules/graceful-fs/fs.js:1:37) at Module._compile (node:internal/modules/cjs/loader:1781:14) at Object..js (node:internal/modules/cjs/loader:1913:10) at Module.load (node:internal/modules/cjs/loader:1505:32) at Function._load (node:internal/modules/cjs/loader:1309:12) Node.js v22.22.3 - Failing command/step - RUN npx gulp js (builder 6/10) - Exit code: 1 - Missing packages or files mentioned - No explicit missing file/package messages; error appears to stem from runtime compatibility. Occurs in modules natives, vinyl-fs, graceful-fs during gulp execution. - Version mismatch info - Node.js version in the build: Node.js v22.22.3 - Base image uses node:22.22.3-alpine3.23 - Telltale cause: gulp/v3-dependent stack (natives, graceful-fs) incompatible with Node 22 (primordials no longer defined). This is a typical primordials-related issue when using older gulp/graceful-fs with newer Node versions.
# syntax=docker/dockerfile:1 # Build stage: install dependencies and build dist assets using gulp FROM node:14-alpine AS builder WORKDIR /app # Install project dependencies (including gulp and related dev tools) COPY package.json ./ RUN npm install --no-audit --no-fund # Copy the rest of the repository COPY . . # Build the JS and CSS assets (avoid gulp default watch in production) RUN npm install --no-audit --no-fund RUN npx gulp js RUN npx gulp css # Ensure dist exists and copy a minimal index RUN mkdir -p dist RUN cp index.html dist/index.html || true # Runtime stage: serve the built dist with a tiny static server FROM node:14-alpine WORKDIR /app # Bring built artifacts from the builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/index.html /app/index.html # Install a small HTTP server to serve the static assets RUN apk add --no-cache bash RUN npm install -g http-server EXPOSE 8080 # Start the static server serving the built dist directory CMD ["http-server", "dist", "-p", "8080"]
Failing step - Builder step 7/10: RUN npx gulp js Exact error message and exit code - Error: ReferenceError: primordials is not defined - Exit code: 1 Missing packages or files mentioned - No explicit missing packages or files reported in the error. A PhantomJS PATH warning occurred during npm install, but PhantomJS was subsequently installed. Version mismatch / root cause info - Base image: node:14-alpine - Root cause: primordials is not defined is a known issue when using older gulp (gulp 3) with newer Node versions (Node 12+/14). Indicates a Node/Gulp compatibility mismatch in this build.
# syntax=docker/dockerfile:1 # Build stage: install dependencies and build dist assets using gulp FROM node:8-alpine AS builder WORKDIR /app # Install project dependencies COPY package.json ./ RUN npm install --silent --no-audit --no-fund # Copy the rest of the repository COPY . . # Build the JS and CSS assets (avoid gulp default watch in production) RUN npx gulp js RUN npx gulp css # Ensure dist exists and copy a minimal index into dist for serving RUN mkdir -p dist RUN cp index.html dist/index.html || true FROM node:8-alpine WORKDIR /app # Bring built artifacts from the builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/index.html /app/index.html # Install a small HTTP server to serve the static assets RUN apk add --no-cache bash RUN npm install -g http-server EXPOSE 8080 # Start the static server serving the built dist directory CMD ["http-server", "dist", "-p", "8080"]
Concerns: No HEALTHCHECK in final image for readiness/endpoint verification., FROM node:8-alpine is end-of-life; consider updating to a newer Node LTS base., The build copies index.html both into dist and also as a root artifact; the root index.html may be unused unless intended for another purpose. Smoke [PASS]: set -e -o pipefail; [ -f dist/index.html ] && grep -q '<html' dist/index.html