docker network prune -f와 sudo systemctl restart docker 명령어로 꼬인 네트워크 규칙을 강제로 초기화하여 해결했습니다.
배운점: 설정이 크게 바뀔 때는 prune이나 서비스 재시작 같은 작업이 필요함을 배웠습니다.
🛠 Issue 2: 환경변수의 미로 (.env vs yaml vs compose)
현상: 로컬에서는 잘 되는데 배포만 하면 DB 접속이 안되는 에러가 발생했습니다.
원인: application.yaml, docker-compose.yml, 그리고 실제 주입되는 환경변수의 이름이 서로 미묘하게 달랐습니다.
해결: "Single Source of Truth (.env)" 전략을 도입했습니다.
모든 변수명을 .env 기준으로 통일했습니다.
docker-compose.yml은 .env를 읽어 컨테이너에 주입하고, 앱은 그 값을 그대로 받도록 설정을 일원화하여 혼란을 잠재웠습니다.
🛠 Issue 3: Redis 보안과 데이터 증발
현상: 코드 리뷰 중 "Redis 포트가 외부에 열려있어 위험하다"는 지적과 "컨테이너 재시작 시 데이터가 날아간다"는 문제를 확인했습니다.
해결:
보안: ports: 127.0.0.1:6379:6379 설정을 통해 외부 접속을 원천 차단하고, 로컬(앱)에서만 접속 가능하게 변경했습니다.
데이터: volumes 설정을 추가하고, redis-server --appendonly yes 옵션을 통해 데이터 영속성을 확보했습니다.
3. 성찰 및 향후 계획
깨달은 점: 단순히 "배포가 된다"를 넘어 "안전하고 효율적으로" 배포하는 것이 얼마나 어려운지 깨달았습니다. 특히 Docker Compose가 제공하는 코드로써의 인프라 덕분에, 팀원들이 복잡한 설치 과정 없이 명령어 한 줄로 동일한 개발 환경을 갖게 된 것이 가장 큰 수확인 것 같습니다.
아쉬운 점: 현재는 배포 시 약 10~30초 정도의 다운타임(서버 끊김)이 발생합니다. 프론트엔드 팀원들이 테스트 중에 불편을 겪기도 했습니다.
향후 계획: 다음 단계로는 Blue/Green 배포 전략을 도입하여, 사용자가 배포 중에도 끊김 없이 서비스를 이용할 수 있는 무중단 배포 환경을 구축하고 싶습니다.
후기: 정말 좋은 경험이었습니다!! 인프라 구축을 바닥부터 하나하나 쌓아가며 경험을 얻은 귀중한 시간이었습니다.