SportsMate 프론트엔드와 백엔드를 함께 실행하기 위한 Docker Compose 구성입니다.
React/Nginx 기반 프론트엔드와 Flask/Gunicorn 기반 백엔드를 하나의 Docker 네트워크로 연결하며, Compose 명령 한 번으로 두 컨테이너를 함께 실행할 수 있습니다.
| Service | Image |
|---|---|
| Frontend | seungchan1122/sportsmate-frontend |
| Backend | seungchan1122/sportsmate-backend |
프론트엔드 또는 백엔드만 별도로 실행하려면 각 이미지 저장소의 실행 방법을 확인해 주세요.
Client
└── Frontend · Nginx
└── /api 요청 프록시
└── Backend · Flask / Gunicorn
└── Supabase PostgreSQL
Compose 내부에서는 backend 서비스 이름을 네트워크 주소로 사용합니다.
http://backend:5000
프론트엔드 Nginx는 /api/ 요청을 위 주소로 전달합니다.
백엔드 실행에 필요한 환경변수를 .env 파일에 설정해야 합니다.
DATABASE_URL=...
SECRET_KEY=...
JWT_SECRET_KEY=...
OPENAI_API_KEY=...
SUPABASE_URL=...
SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
실제 비밀번호와 API 키는 이미지 또는 Compose 아티팩트에 포함되어 있지 않습니다.
docker compose \
--env-file .env \
-f oci://docker.io/seungchan1122/sportsmate:1.0 \
up -d
실행 후 다음 주소에서 확인할 수 있습니다.
| Service | URL |
|---|---|
| Frontend | http://localhost:5002 |
| Backend | http://localhost:5001 |
| Health Check | http://localhost:5002/api/health |
docker ps
헬스 체크:
curl -i http://localhost:5001/api/health
curl -i http://localhost:5002/api/health
정상 응답:
{
"status": "ok"
}
docker compose \
--env-file .env \
-f oci://docker.io/seungchan1122/sportsmate:1.0 \
logs -f
docker compose \
--env-file .env \
-f oci://docker.io/seungchan1122/sportsmate:1.0 \
down
전체 서비스를 함께 실행하지 않고 특정 서비스만 필요한 경우 아래 저장소를 이용할 수 있습니다.
React 애플리케이션을 빌드한 뒤 Nginx로 제공하는 이미지입니다.
SportsMate Frontend 이미지로 이동 →
Flask API 서버를 Gunicorn으로 실행하는 이미지입니다.