32 lines
884 B
Docker
32 lines
884 B
Docker
# Stage 1 – Build Flutter web
|
||
FROM ghcr.io/cirruslabs/flutter:stable AS builder
|
||
|
||
WORKDIR /app
|
||
|
||
RUN useradd -m -u 10001 flutteruser
|
||
|
||
COPY --chown=flutteruser:flutteruser pubspec.yaml pubspec.lock* ./
|
||
USER flutteruser
|
||
RUN git config --global --add safe.directory /sdks/flutter
|
||
RUN flutter pub get
|
||
|
||
COPY --chown=flutteruser:flutteruser . .
|
||
|
||
# Inject API base URL at build time via --dart-define.
|
||
# Default to same-origin /api to avoid mixed-content in HTTPS deployments.
|
||
ARG API_BASE_URL=/api
|
||
RUN flutter build web --release \
|
||
--dart-define=API_BASE_URL=${API_BASE_URL}
|
||
|
||
# Stage 2 – Serve with Caddy
|
||
FROM caddy:alpine AS runner
|
||
|
||
ARG PORT=5000
|
||
ENV PORT=${PORT}
|
||
|
||
COPY --from=builder /app/build/web /usr/share/caddy
|
||
COPY Caddyfile /etc/caddy/Caddyfile
|
||
|
||
EXPOSE ${PORT}
|
||
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]
|