Files
BaronSSO/baron-sso/userfront/Dockerfile

41 lines
1.2 KiB
Docker

FROM ghcr.io/cirruslabs/flutter:3.38.0 AS dev
ENV RUN_FLUTTER_AS_ROOT=true
WORKDIR /workspace
COPY scripts ./scripts
COPY locales ./locales
COPY userfront ./userfront
WORKDIR /workspace/userfront
RUN flutter pub get
EXPOSE 5000
CMD ["sh", "./scripts/dev-server.sh"]
# Stage 1: Build Flutter
FROM ghcr.io/cirruslabs/flutter:3.38.0 AS build
ENV RUN_FLUTTER_AS_ROOT=true
WORKDIR /app
COPY . .
# Get dependencies and build for web
RUN /bin/sh ./scripts/sync_userfront_locales.sh
WORKDIR /app/userfront
RUN flutter pub get
RUN rm -rf build/web && flutter build web --release --wasm
FROM node:24-trixie-slim AS optimize
WORKDIR /work
COPY --from=build /app/userfront/build/web /work/build/web
COPY userfront/scripts/optimize-web-build.mjs /work/scripts/optimize-web-build.mjs
RUN node /work/scripts/optimize-web-build.mjs /work/build/web
# Stage 2: Serve with Nginx
FROM debian:trixie-slim AS production
RUN apt-get update \
&& apt-get install -y --no-install-recommends nginx ca-certificates wget \
&& rm -rf /var/lib/apt/lists/*
# Copy built assets
COPY --from=optimize /work/build/web /usr/share/nginx/html
# Copy custom Nginx config
COPY userfront/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 5000
CMD ["nginx", "-g", "daemon off;"]