55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
ARG FLUTTER_VERSION=3.29.3
|
|
ARG NGINX=1.25.2-alpine3.18-slim
|
|
|
|
# Stage 1 - Build Flutter Web on Debian
|
|
FROM debian:latest AS builder
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
git \
|
|
curl \
|
|
unzip \
|
|
xz-utils \
|
|
libglu1-mesa \
|
|
cmake \
|
|
clang \
|
|
ninja-build \
|
|
pkg-config \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Flutter manually
|
|
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter
|
|
WORKDIR /usr/local/flutter
|
|
RUN git checkout stable
|
|
|
|
# Set Flutter environment
|
|
ENV PATH="$PATH:/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin"
|
|
RUN flutter doctor -v
|
|
RUN flutter config --enable-web
|
|
|
|
# Copy app files
|
|
COPY . /app
|
|
WORKDIR /app
|
|
|
|
# Clean and get packages
|
|
RUN flutter clean
|
|
RUN flutter pub get
|
|
RUN flutter build web --release --output=build/tm_pwa
|
|
|
|
# Stage 2 - Runtime with NGINX
|
|
FROM nginx:${NGINX}
|
|
|
|
# Install runtime dependencies
|
|
RUN apk --no-cache add \
|
|
curl \
|
|
tzdata \
|
|
ca-certificates \
|
|
&& mkdir -p /var/log/app \
|
|
&& chown nginx:nginx /var/log/app
|
|
|
|
# Copy build files from Debian builder
|
|
COPY --from=builder /app/build/tm_pwa /usr/tm/nginx/html
|
|
|
|
EXPOSE 80
|
|
CMD ["nginx", "-g", "daemon off;"] |