# Use Node.js base image FROM node:12-slim # Set working directory WORKDIR /usr/src/app # Install system dependencies if needed (none explicitly) # Copy package manifests COPY package.json package-lock.json ./ # Install dependencies RUN npm ci --silent # Copy source code COPY . . # Build the project RUN npm run build # Expose build artifacts directory (optional) # Expose nothing. We just set a CMD to keep container alive CMD ["bash", "-lc", "echo 'Augury build complete. Build artifacts are in /usr/src/app/build' && tail -f /dev/null"]
# Docker build ignore list .git .gitignore node_modules build dist coverage .DS_Store .env npm-debug.log* *.log .vscode/** .idea/** *.tmp *.swp *.swo # Ignore tests artifacts if present test-output/**
Concerns: Assumes build artifacts are placed in /usr/src/app/build; if npm run build outputs elsewhere, smoke tests will fail, BASE IMAGE Node 12-slim is old (end-of-life); consider updating to a newer LTS, Container runtime does not run the app; only builds are produced and the CMD keeps the container alive; no runtime healthcheck Smoke [FAIL]: test -d /usr/src/app/build && echo 'BUILD_DIR_FOUND' || echo 'BUILD_DIR_MISSING Output: sh: 1: Syntax error: Unterminated quoted string Smoke [PASS]: node -v && npm -v
# Use Node.js base image
FROM node:12-slim
# Set working directory
WORKDIR /usr/src/app
# Install system dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
python3 \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Copy package manifests
COPY package.json package-lock.json ./
# Install dependencies
RUN npm ci --silent
# Copy source code
COPY . .
# Build the project
RUN npm run build
# Expose build artifacts directory (optional)
# Expose nothing. We just set a CMD to keep container alive
CMD ["bash","-lc","if [ -d /usr/src/app/build ]; then echo BUILD_DIR_FOUND; else echo BUILD_DIR_MISSING; fi; tail -f /dev/null"]
- Exact message: ERROR: failed to build: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends build-essential python3 git ca-certificates && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
- Failing step: [3/7] RUN apt-get update && apt-get install -y --no-install-recommends build-essential python3 git ca-certificates && rm -rf /var/lib/apt/lists/*
- Missing packages / fetch issues:
- apt-get failed to fetch package lists due to 404 errors from Debian stretch repositories
- 404 Not Found for stretch/main, stretch-updates/main, and security stretch/updates packages
- The repository messages indicate missing Release files: The repository 'http://deb.debian.org/debian stretch Release' does not have a Release file.
- Specific fetch errors:
- Err:11 http://security.debian.org/debian-security stretch/updates/main amd64 Packages 404 Not Found
- E: Failed to fetch http://deb.debian.org/debian/dists/stretch/main/binary-amd64/Packages 404 Not Found
- E: Failed to fetch http://deb.debian.org/debian/dists/stretch-updates/main/binary-amd64/Packages 404 Not Found
- E: Some index files failed to download. They have been ignored, or old ones used instead.
- Root cause:
- Base image node:12-slim relies on Debian Stretch, which is end-of-life and its repositories have been removed, causing apt-get to fail to access valid package lists.
- Context and remediation:
- Failure occurs during system dependencies install (build-essential, python3, git, ca-certificates) due to deprecated Debian Stretch repos.
- Remediation: switch to a supported Debian base (e.g., node:18-slim or node:20-slim) or update apt sources to a currently supported Debian release.# Use Node.js base image
FROM node:18-slim
# Set working directory
WORKDIR /usr/src/app
# Install system dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
python3 \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Copy package manifests
COPY package.json package-lock.json ./
# Install dependencies
RUN npm ci --silent
# Copy source code
COPY . .
# Build the project
RUN npm run build
# Expose build artifacts directory (optional)
# Expose nothing. We just set a CMD to keep container alive
CMD ["bash","-lc","if [ -d build ]; then echo BUILD_DIR_FOUND; else echo BUILD_DIR_MISSING; fi; tail -f /dev/null"]
Concerns: The build output directory is assumed to be build at /usr/src/app/build; if the project outputs to dist or another folder, the smoke tests may fail even if build succeeds., The CMD keeps the container alive with tail -f; this is fine for smoke tests but not ideal for production 런NER or user interaction. Smoke [PASS]: test -d /usr/src/app/build && echo BUILD_DIR_FOUND || echo BUILD_DIR_MISSING Smoke [PASS]: if [ -d /usr/src/app/build ]; then if [ -n "$(ls -A /usr/src/app/build 2>/dev/null)" ]; then echo BUILD_DIR_NON_EMPTY; else echo BUILD_DIR_EMPTY; fi; else echo BUILD_DIR_MISSING; fi