From 16848bfdf0024b0be81252b77f7383ef9d24c0bd Mon Sep 17 00:00:00 2001 From: Linus Waldowsky Date: Wed, 18 Feb 2026 20:12:05 +0100 Subject: [PATCH] refactor: clone repo from Gitea in Dockerfile instead of COPY Replace local COPY with git clone --depth 1 so the image can be built without a local source context. Adds BRANCH build arg (default: main). --- CLAUDE.md | 6 ++++-- apps/server/docker/Dockerfile | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4a5cb7b..a3a2a87 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -540,11 +540,13 @@ docker compose up -d # Start Radicale CalDAV server ### Server Docker Image ```bash -# Build from repo root: +# Build (clones from Gitea, no local context needed): docker build -f apps/server/docker/Dockerfile -t calchat-server . +# Build from a specific branch: +docker build -f apps/server/docker/Dockerfile --build-arg BRANCH=feature-x -t calchat-server . docker run -p 3000:3000 --env-file apps/server/.env calchat-server ``` -Multi-stage build: compiles shared + server in build stage, copies only `dist/` and production dependencies to runtime stage. `.dockerignore` excludes `node_modules`, `dist`, `apps/client`, `.git`, `.env`, `*.md`. +Multi-stage build: clones the repo from Gitea (`git clone --depth 1`) in the build stage using a `BRANCH` build arg (default: `main`), compiles shared + server, then copies only `dist/` and production dependencies to the runtime stage. No local source context required — the image can be built on any machine with Docker. ### Environment Variables Server requires `.env` file in `apps/server/`: diff --git a/apps/server/docker/Dockerfile b/apps/server/docker/Dockerfile index 4c2ca36..6e58758 100644 --- a/apps/server/docker/Dockerfile +++ b/apps/server/docker/Dockerfile @@ -1,10 +1,10 @@ FROM node:alpine AS build -WORKDIR /app +RUN apk add --no-cache git -COPY package.json package-lock.json tsconfig.json ./ -COPY packages/shared/ packages/shared/ -COPY apps/server/ apps/server/ +ARG BRANCH=main +WORKDIR /app +RUN git clone --branch ${BRANCH} --depth 1 https://gitea.gilmour109.de/Gilmour109/calchat.git . RUN npm ci --workspace=@calchat/server --workspace=@calchat/shared --include-workspace-root @@ -15,9 +15,9 @@ FROM node:alpine WORKDIR /app -COPY package.json package-lock.json ./ -COPY packages/shared/package.json packages/shared/ -COPY apps/server/package.json apps/server/ +COPY --from=build /app/package.json /app/package-lock.json ./ +COPY --from=build /app/packages/shared/package.json packages/shared/ +COPY --from=build /app/apps/server/package.json apps/server/ RUN npm ci --omit=dev --workspace=@calchat/server --workspace=@calchat/shared --include-workspace-root