# syntax=docker/dockerfile:1.7 FROM dart:latest AS web_builder RUN apt-get update && apt-get install -y --no-install-recommends \ git \ curl \ unzip \ xz-utils \ libglu1-mesa \ ca-certificates \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN useradd -ms /bin/bash flutteruser ENV PATH="/home/flutteruser/flutter/bin:${PATH}" USER flutteruser WORKDIR /home/flutteruser RUN git clone --branch stable --depth 1 https://github.com/flutter/flutter.git \ && flutter config --enable-web \ && flutter precache --web \ && flutter upgrade COPY --chown=flutteruser:flutteruser frontend /home/flutteruser/app # Build shared package code generation WORKDIR /home/flutteruser/app/pshared RUN flutter clean \ && flutter pub get \ && dart run build_runner build --delete-conflicting-outputs # Build the web client WORKDIR /home/flutteruser/app/pweb RUN flutter clean \ && flutter pub get \ && flutter build web --release --no-tree-shake-icons FROM caddy:alpine AS runtime WORKDIR /usr/share/pweb COPY frontend/pweb/entrypoint.sh /entrypoint.sh COPY frontend/pweb/caddy/Caddyfile /etc/caddy/Caddyfile COPY --from=web_builder /home/flutteruser/app/pweb/build/web /usr/share/pweb RUN chmod +x /entrypoint.sh EXPOSE 80 443 ENTRYPOINT ["/entrypoint.sh"]