Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,16 @@ updates:
directory: /
schedule: { interval: weekly }
open-pull-requests-limit: 3
# Container base images: auto-bump the @sha256 digests pinned in each Dockerfile FROM line.
- package-ecosystem: docker
directory: /services/api
schedule: { interval: weekly }
open-pull-requests-limit: 3
- package-ecosystem: docker
directory: /apps/web
schedule: { interval: weekly }
open-pull-requests-limit: 3
- package-ecosystem: docker
directory: /services/converter
schedule: { interval: weekly }
open-pull-requests-limit: 3
4 changes: 2 additions & 2 deletions apps/web/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Build the Vite app, then serve the static bundle with nginx.
# Build context = repo root (this is an npm workspace: the only lockfile is the root package-lock.json).
FROM node:20-slim AS build
FROM node:20-slim@sha256:2cf067cfed83d5ea958367df9f966191a942351a2df77d6f0193e162b5febfc0 AS build
WORKDIR /repo
# Manifests + lockfile first, so `npm ci` is a reproducible, cache-friendly layer that only re-runs when
# deps change — not on every source edit. `npm ci` (vs `npm install`) installs EXACTLY the locked tree
Expand All @@ -11,7 +11,7 @@ RUN npm ci
COPY apps/web/ apps/web/
RUN npm run build --workspace apps/web # prebuild copies web-ifc WASM into public/wasm/

FROM nginx:alpine
FROM nginx:alpine@sha256:4a73073bd557c65b759505da037898b61f1be6cbcc3c2c3aeac22d2a470c1752
COPY apps/web/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /repo/apps/web/dist /usr/share/nginx/html
EXPOSE 80
35 changes: 18 additions & 17 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions services/api/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Pin the fragments/web-ifc pair to the SAME versions as the client parser (apps/web/package.json).
# CI enforces this (scripts/check-fragments-version.mjs) — a mismatch means the server emits .frag the
# browser can't parse.
FROM node:20-slim AS converter
FROM node:20-slim@sha256:2cf067cfed83d5ea958367df9f966191a942351a2df77d6f0193e162b5febfc0 AS converter
WORKDIR /conv
ARG FRAGMENTS_VERSION=3.4.5
ARG WEBIFC_VERSION=0.0.77
Expand All @@ -15,7 +15,7 @@ RUN npm init -y >/dev/null 2>&1 && npm install --no-audit --no-fund \
# --- python build stage (B3): a full toolchain compiles any source-only wheel HERE, then we lift only
# the installed packages into the runtime image below. gcc + headers never ship to production, so the
# runtime image is smaller and carries no compiler in its attack surface. ---
FROM python:3.12-slim AS pybuild
FROM python:3.12-slim@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de AS pybuild
# build toolchain + the same shared libs, so wheels that need to compile can link during install
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 libglib2.0-0 build-essential python3-dev \
Expand All @@ -29,7 +29,7 @@ COPY services/api/requirements.lock /tmp/req/requirements.lock
# wholesale into the runtime stage.
RUN pip install --prefix=/install --require-hashes -r /tmp/req/requirements.lock

FROM python:3.12-slim
FROM python:3.12-slim@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de

WORKDIR /app
ENV PYTHONUNBUFFERED=1 \
Expand Down
2 changes: 1 addition & 1 deletion services/converter/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# IFC→Fragments converter (Node). Build context = repo root.
FROM node:20-slim
FROM node:20-slim@sha256:2cf067cfed83d5ea958367df9f966191a942351a2df77d6f0193e162b5febfc0
WORKDIR /app

# install just what the converter needs; web-ifc ships its own WASM. Pin to the SAME versions as the
Expand Down