58 lines
1.5 KiB
Docker
58 lines
1.5 KiB
Docker
# Development Dockerfile for Frontend (Flutter Web)
|
|
|
|
FROM dart:stable 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
|
|
|
|
# Install Flutter
|
|
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
|
|
|
|
# Replace production config with dev config
|
|
WORKDIR /home/flutteruser/app/pshared
|
|
RUN cp lib/config/common_dev.dart lib/config/common.dart
|
|
|
|
# Build shared package with code generation
|
|
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
|
|
|
|
# Runtime stage with Caddy
|
|
FROM caddy:alpine AS runtime
|
|
|
|
WORKDIR /usr/share/pweb
|
|
|
|
COPY --from=web_builder /home/flutteruser/app/pweb/build/web /usr/share/pweb
|
|
|
|
# Copy Caddy config (will be mounted from host)
|
|
# COPY frontend/pweb/caddy/Caddyfile /etc/caddy/Caddyfile
|
|
|
|
EXPOSE 80
|
|
|
|
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]
|