Docker 기반 GSMSV 운영 배포 환경 구성 - #35
Merged
Merged
Conversation
This was referenced Aug 31, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✨ 작업 내용
GSMSV 학교 VM에서 PR #33 병합 이후 MUDDA를 최초 수동 배포할 수 있도록 Docker 기반 운영 파일과 배포 문서를 추가했습니다.
Dockerfiledocker-compose.prod.yml8080만 publishapplication-prod.yaml,.env.production.example및 Secret 제외 규칙🔍 리뷰 시 참고사항
운영 환경
app:8080→ 내부postgres:5432/redis:6379https://mudda-api.https.gsmsv.siteAsia/Seoul주요 설계
docker-compose.yml은 유지하고 운영용 Compose를 분리했습니다.postgis/postgis:16-3.5-alpine을 사용하며, 초기화 SQL은 PostGIS 확장만 활성화하고 스키마는 Flyway가 관리합니다.readinessState,db,redis를 포함하며/actuator/health/**만 인증 없이 허용합니다. 다른 Actuator Endpoint는 외부에 노출하지 않습니다.MUDDA_MASTER_KEY생성·별도 백업·분실 주의사항을 운영 문서에 명시했습니다.문서
docs/GSMSV_MANUAL_DEPLOYMENT.md.env준비, Firebase credential 배치, 이미지 빌드와 Compose 실행검증 결과
./gradlew test --tests 'team.cklob.mudda.global.config.SecurityConfigTest' -Dorg.gradle.java.home=...통과./gradlew build -x test -Dorg.gradle.java.home=...통과git diff --check통과docker compose --env-file .env.production -f docker-compose.prod.yml config --quiet통과 (실제 Secret이 아닌 임시 검증 값 사용)./gradlew test전체 통과./gradlew check전체 통과전체 Gradle
test/check는 298개 중 11개가 Testcontainers 초기화 단계에서 실패했습니다. Docker Desktop Linux Engine이 실행되지 않아DockerClientProviderStrategy가 Docker 데몬을 찾지 못한 환경 제한입니다. Docker 이미지 빌드와 Compose 통합 기동도 같은 이유로 실행하지 못했습니다. 코드 컴파일과 non-integration 테스트는 통과했습니다.자체 코드 리뷰
1차 리뷰에서 Docker 빌드 시 plain JAR까지 매칭될 수 있는 문제를 발견해 실행 JAR 하나만 복사하도록 수정했고, 운영 Compose에 PostGIS 초기화 SQL을 연결했습니다. readiness 경로 인증 허용도 테스트로 고정했습니다.
2차 리뷰에서
AGENTS.md·CLAUDE.md준수, 운영 파일 범위, 로컬 Compose 보존, 기존 Flyway 보존, CD·Discord 제외, Secret·임시 산출물 미포함, 문서 명령 일치 여부를 재확인했습니다.제외 범위 및 후속 작업
✅ 체크리스트
.env.example등) 변경이 필요한 경우 작성 또는 수정했나요?📎 관련 이슈(선택)