# 1단계: Flutter 웹 애플리케이션 빌드 # 신뢰할 수 있는 출처의 특정 Flutter 버전 사용 FROM ghcr.io/cirruslabs/flutter:stable AS builder # ENV RUN_FLUTTER_AS_ROOT=true WORKDIR /app # Docker 캐시를 활용하기 위해 pubspec 파일들을 먼저 복사 COPY frontend/pubspec.yaml frontend/pubspec.lock ./ RUN flutter pub get # 나머지 프론트엔드 소스 코드 복사 COPY frontend/ . # 웹 애플리케이션 빌드 RUN flutter build web --release --no-tree-shake-icons # 2단계: 빌드된 파일들을 Nginx로 서빙 # 경량의 공식 Nginx 이미지 사용 FROM nginx:1.27-alpine # 기본 Nginx 설정 파일 제거 RUN rm /etc/nginx/conf.d/default.conf # 사용자 정의 Nginx 설정 (선택 사항이지만 라우팅 등을 위해 권장) COPY frontend/nginx.conf /etc/nginx/conf.d/default.conf # 빌더 스테이지에서 빌드된 웹 파일들을 복사 COPY --from=builder /app/build/web /usr/share/nginx/html # Nginx 서버를 위해 80번 포트 노출 EXPOSE 80 # Nginx를 포그라운드에서 시작 CMD ["nginx", "-g", "daemon off;"]