2026-05-11 20:20:47 +00:00
|
|
|
# Build and run the Flotilla web server.
|
|
|
|
|
#
|
|
|
|
|
# docker build -t flotilla .
|
|
|
|
|
# docker run -p 3000:3000 flotilla
|
|
|
|
|
#
|
|
|
|
|
# Pass --build-arg VITE_BUILD_HASH=$(git rev-parse --short HEAD) to stamp the build.
|
2026-09-24 02:47:46 +00:00
|
|
|
# A .env in the build context is picked up by scripts/build/app.sh for branding config.
|
2026-03-03 19:52:22 +00:00
|
|
|
|
2026-05-15 09:23:15 +00:00
|
|
|
# https://pnpm.io/docker#example-3-build-on-cicd
|
|
|
|
|
FROM node:24-slim AS builder
|
|
|
|
|
ENV PNPM_HOME="/pnpm"
|
|
|
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
|
|
|
RUN corepack enable
|
2025-05-15 18:31:19 +00:00
|
|
|
|
|
|
|
|
WORKDIR /app
|
2026-05-15 09:23:15 +00:00
|
|
|
ENV NODE_OPTIONS=--max_old_space_size=16384
|
2026-06-23 20:32:32 +00:00
|
|
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
2026-09-24 17:30:02 +00:00
|
|
|
COPY packages ./packages
|
2026-05-11 20:20:47 +00:00
|
|
|
RUN pnpm i --frozen-lockfile
|
|
|
|
|
COPY . .
|
2026-05-15 09:23:15 +00:00
|
|
|
ARG VITE_BUILD_HASH
|
2026-05-11 20:20:47 +00:00
|
|
|
RUN pnpm run build
|
2026-05-15 09:23:15 +00:00
|
|
|
RUN pnpm run build:server
|
2026-05-04 21:02:56 +00:00
|
|
|
|
2026-05-15 09:23:15 +00:00
|
|
|
FROM node:24-slim AS production
|
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
COPY --from=builder /app/build /app/build
|
2026-09-25 17:12:58 +00:00
|
|
|
# The bundle splits, and the chunks it imports at runtime sit beside it.
|
|
|
|
|
COPY --from=builder /app/build-server/ /app/
|
2026-05-04 21:02:56 +00:00
|
|
|
EXPOSE 3000
|
2026-05-15 09:23:15 +00:00
|
|
|
USER node
|
2026-05-04 21:02:56 +00:00
|
|
|
CMD ["node", "server.js"]
|