Files
rfid-database/Dockerfile
Nick TrochalakisandCursor Agent 5aa5fef9af Fix Dockerfile conflict markers broken on main (#3)
* Fix conflict markers on main and guard CI against them

PR #2 merged before the Dockerfile cleanup landed, leaving <<<<<<<
markers that break docker compose build. Restore clean Docker files
and fail CI if conflict markers appear in the tree.

* Add CI check that fails on merge conflict markers

* Narrow conflict-marker CI check to <<<<<<< and >>>>>>>

---------

Co-authored-by: Cursor Agent <[email protected]>
2026-08-23 23:32:54 +00:00

56 lines
1.9 KiB
Docker

# syntax=docker/dockerfile:1
FROM node:22-bookworm-slim AS deps
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends python3 make g++ \
&& rm -rf /var/lib/apt/lists/*
COPY package.json package-lock.json ./
RUN npm ci
FROM node:22-bookworm-slim AS builder
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends python3 make g++ \
&& rm -rf /var/lib/apt/lists/*
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
ENV AUTH_SECRET=build-time-placeholder-secret-32chars
RUN npm run build \
&& npm prune --omit=dev
FROM node:22-bookworm-slim AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV RFID_DB_PATH=/data/rfid.db
ENV PORT=3000
ENV HOSTNAME=0.0.0.0
ENV AUTH_TRUST_HOST=true
RUN apt-get update && apt-get install -y --no-install-recommends libstdc++6 curl \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /data \
&& chown node:node /data
COPY --from=builder --chown=node:node /app/package.json /app/package-lock.json ./
COPY --from=builder --chown=node:node /app/node_modules ./node_modules
COPY --from=builder --chown=node:node /app/.next ./.next
COPY --from=builder --chown=node:node /app/public ./public
COPY --from=builder --chown=node:node /app/scripts ./scripts
COPY --from=builder --chown=node:node /app/src ./src
COPY --from=builder --chown=node:node /app/tsconfig.json ./tsconfig.json
# tsx is needed for create-user / entrypoint bootstrap (devDependency pruned above)
RUN npm install --omit=dev [email protected] \
&& chown -R node:node /app/node_modules
COPY --chown=node:node docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
USER node
EXPOSE 3000
VOLUME ["/data"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD curl -fsS http://127.0.0.1:3000/login >/dev/null || exit 1
ENTRYPOINT ["/entrypoint.sh"]
CMD ["npm", "run", "start"]