diff --git a/.dockerignore b/.dockerignore index eb6718ab..787aed84 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,10 +12,9 @@ apps/core/bin/ apps/core/server -# Electron source (not needed, but keep package.json for workspace resolution) +# Electron source (not needed, but keep package.json files for workspace/build) apps/electron/src/ apps/electron/scripts/ -apps/electron/app/ docs/ # OS files diff --git a/Dockerfile b/Dockerfile index fd7bf100..e60629a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ # ===== Stage 1: Node Builder (runs natively on build machine) ===== FROM --platform=$BUILDPLATFORM node:22-bookworm-slim AS node-builder +RUN apt-get update && apt-get install -y --no-install-recommends unzip && rm -rf /var/lib/apt/lists/* RUN corepack enable && corepack prepare pnpm@10.15.0 --activate # Map Docker TARGETARCH to Node arch naming for deps download @@ -26,11 +27,12 @@ COPY apps/electron/package.json apps/electron/package.json COPY packages/ packages/ RUN pnpm install --frozen-lockfile -# Copy source files +# Copy source files and root configs needed by builds +COPY tsconfig*.json turbo.json .env* ./ COPY apps/ui/ apps/ui/ COPY apps/player-ui/ apps/player-ui/ +COPY apps/electron/app/package.json apps/electron/app/package.json COPY scripts/ scripts/ -COPY .env* turbo.json ./ # Build player-ui (will be embedded in Go core binary) RUN pnpm --filter @mediago/player-ui run build @@ -61,6 +63,9 @@ COPY apps/core/ apps/core/ # Copy player-ui dist into assets for go:embed COPY --from=node-builder /src/apps/player-ui/dist apps/core/assets/player/ +# Ensure all dependencies are downloaded (go.sum may have been updated) +RUN cd apps/core && go mod download + # Build Go core binary (cross-compile, no CGO) RUN cd apps/core && \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \