blue green 배포 시 업로드 파일 손실 트러블 슈팅 - KimGyuBek/Threadly GitHub Wiki
- 운영 중 배포 후 게시글 이미지가 표시되지 않는 문제 발생했다.
- 응답에는 정상적으로 이미지 조회 URL이 포함되어있다.
- 그러나 해당 URL로 직접 요청을 보내면
Not fOund응답이 반환되었다.
{
"success": true,
"code": "SUCCESS",
"message": "요청이 성공적으로 처리되었습니다.",
"data": {
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "No static resource lfkvpFb6GOetGsEo.webp.",
"instance": "/images/posts/lfkvpFb6GOetGsEo.webp"
},
"timestamp": "2025-11-09T01:14:10.113111551"
}- 단순히 잘못된 URL일 가능성을 고려해 DB에서 직접 복사한 URL으로 요청을 보냈지만 동일한 상황 발생
-
ec2의 docker container 내부를 확인해보니 업로드된 파일들이 존재하지 않았다. -
docker-copmose.yml에서threadly-service실행 시 파일 업로드 경로가 마운트 되지 않아 파일이 컨테이너 내부에만 저장되고 배포 과정으로 인한 컨테이너 전환 과정에서 사라진것이 원인이었다.
# docker-compose.blue/green.yml
volumes:
- /home/ubuntu/threadly/logs/services/app/blue:/app/logs # 로그 저장 경로만 마운트 되어 있음# docker-compose.blue/green.yml
volumes:
- /home/ubuntu/threadly/logs/services/app/blue:/app/logs
- /home/ubuntu/threadly/storage/uploads:/app/local-storage/uploadsubuntu@ip-172-31-44-9:~/threadly$ tree storage -pug -L 3
[drwxr-xr-x ubuntu ubuntu ] storage
└── [drwxr-xr-x ubuntu ubuntu ] uploads
└── [drwxr-xr-x root root ] images
├── [drwxr-xr-x 999 systemd-journal] posts
└── [drwxr-xr-x 999 systemd-journal] profiles
blue-green 배포 환경에서 Docker 컨테이너가 전환되는 과정 중 디렉토리와 마운트 하지 않은 상태에서는 컨테이너가 완전히 독립적이므로 전환 시 파일이
손실되는 문제가 발생했다.
Docker 환경에서는 반드시 호스트 디렉토리를 컨테이너에 마운트하여 배포 또는 컨테이너 전환시에도 손실이 업도록 주의해야한다.