-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
35 lines (34 loc) · 1.33 KB
/
Copy pathDockerfile
File metadata and controls
35 lines (34 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Build context is the repo root. One image for the whole workspace: core, the
# in-process modules it depends on, and the built portal (served from /app/web).
FROM node:24-alpine AS build
RUN corepack enable
WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.base.json ./
COPY packages/sdk/package.json packages/sdk/
COPY packages/core/package.json packages/core/
COPY packages/portal/package.json packages/portal/
COPY packages/portal-ui/package.json packages/portal-ui/
COPY modules/brain/package.json modules/brain/
COPY modules/builtin/package.json modules/builtin/
COPY modules/media/package.json modules/media/
COPY modules/travel/package.json modules/travel/
COPY remote/simracing/package.json remote/simracing/
RUN pnpm install --frozen-lockfile
COPY packages/ packages/
COPY modules/ modules/
COPY remote/ remote/
RUN pnpm -r --filter '!@friday/remote-simracing' build \
&& pnpm --filter @friday/core deploy --prod --legacy /out
FROM node:24-alpine
ENV NODE_ENV=production
ENV FRIDAY_WEB_DIR=/app/web
ENV FRIDAY_DATA_DIR=/data
WORKDIR /app
COPY --from=build /out/ ./
COPY --from=build /app/packages/portal/dist/ web/
# friday.db lives here; in k8s a PersistentVolumeClaim is mounted over it.
RUN mkdir -p /data && chown node:node /data
# Runs as the unprivileged node user.
USER node
EXPOSE 8080
CMD ["node", "dist/server.js"]