# syntax=docker/dockerfile:1.7 # --- Build stage ------------------------------------------------------------ # Note: This Dockerfile should be built from the parent directory: # docker build -f mnemo_cards_web_v2/Dockerfile -t mnemo_cards_web . FROM ghcr.io/cirruslabs/flutter:3.35.5 AS build WORKDIR /app # Copy all local dependencies COPY mnemo_cards_common /app/mnemo_cards_common COPY mnemo_cards_frontend_common /app/mnemo_cards_frontend_common COPY chat/mnemo_cards_chat /app/chat/mnemo_cards_chat COPY games/packages/bridge_core /app/games/packages/bridge_core COPY games/packages/payloads_shared /app/games/packages/payloads_shared COPY games/packages/game_tests /app/games/packages/game_tests # Copy web app sources COPY mnemo_cards_web_v2 /app/mnemo_cards_web_v2 WORKDIR /app/mnemo_cards_web_v2 # Get dependencies RUN flutter pub get # Build arg for API URL ARG API_BASE_URL=https://api.mnemo-cards.online # Build web app RUN flutter build web --release --no-source-maps \ --dart-define=API_BASE_URL=${API_BASE_URL} # Verify build output RUN ls -la build/web/ && test -f build/web/index.html || (echo "ERROR: index.html not found!" && exit 1) # --- Runtime stage ---------------------------------------------------------- FROM nginx:1.27-alpine AS runtime # Install wget for healthcheck RUN apk add --no-cache wget # Copy nginx config COPY mnemo_cards_web_v2/nginx.conf /etc/nginx/conf.d/default.conf # Copy built web app COPY --from=build /app/mnemo_cards_web_v2/build/web/ /usr/share/nginx/html/ # Verify files were copied RUN ls -la /usr/share/nginx/html/ && test -f /usr/share/nginx/html/index.html || (echo "ERROR: index.html not copied!" && exit 1) EXPOSE 80 # Healthcheck HEALTHCHECK --interval=30s --timeout=5s --retries=3 --start-period=10s \ CMD wget --no-verbose --tries=1 --spider http://127.0.0.1/ || exit 1