diff --git a/CLAUDE.md b/CLAUDE.md index 330ebc4..93c2829 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,11 +1,12 @@ -## 배포 +## 배포 (Coolify) -1. 변경 사항을 커밋/푸시합니다. -2. Kubero(https://kubero.bokdev.in)에서 배포하면 - `http://<내앱이름>.apps.bokdev.in` 으로 접속됩니다. +1. 변경 사항을 Gitea에 커밋/푸시합니다. +2. Coolify(https://coolify.bokdev.in)가 이 **Dockerfile**로 자동 빌드·배포합니다. + Coolify 앱 설정의 **Port 는 3000**, 도메인은 `https://<내앱이름>.apps.bokdev.in`. ## 꼭 지킬 규칙 (배포 규격) -- HTTP 서버는 **0.0.0.0 의 8080 포트**에서 떠야 합니다. +- HTTP 서버는 **0.0.0.0** 에서 떠야 하며, 포트는 **`PORT` 환경변수(기본 3000)** 를 따릅니다. + Coolify 리버스 프록시가 기본 **3000** 포트로 라우팅하므로, 포트를 바꾸면 502 Bad Gateway가 납니다. - 새 패키지를 쓰면 `requirements.txt`에 꼭 추가하세요. -- 파일에 저장한 데이터는 재배포하면 사라집니다. \ No newline at end of file +- 파일에 저장한 데이터는 재배포하면 사라집니다. diff --git a/Dockerfile b/Dockerfile index 98352d0..b0fac2d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -# 로컬(podman)과 Kubero 자동빌드가 공유하는 단일 Dockerfile. -# - 로컬: podman build -t maze-runner . && podman run --rm -p 8080:8080 maze-runner -# - 배포: git push → Kubero가 이 Dockerfile로 빌드/배포 (http://<앱이름>.apps.bokdev.in) +# 로컬(podman)과 Coolify 자동빌드가 공유하는 단일 Dockerfile. +# - 로컬: podman build -t maze-runner . && podman run --rm -p 3000:3000 maze-runner +# - 배포: Gitea push → Coolify가 이 Dockerfile로 빌드/배포 (https://<앱이름>.apps.bokdev.in) FROM python:3.12-slim WORKDIR /app @@ -12,10 +12,10 @@ RUN pip install --no-cache-dir -r requirements.txt # 앱 소스 COPY . . +# 배포 규격: 0.0.0.0 / 3000 포트 (Coolify 리버스 프록시 기본 라우팅 포트 — sample 과 동일) ENV PYTHONUNBUFFERED=1 \ - PORT=8080 -# 배포 규격: 0.0.0.0 의 8080 포트 -EXPOSE 8080 + PORT=3000 +EXPOSE 3000 # 비루트 실행 RUN useradd --create-home --uid 10001 appuser diff --git a/main.py b/main.py index 4879a1d..616d9ba 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,8 @@ # 200x100 랜덤 미로 생성 + 다익스트라 탐색 시각화 앱 -# 규칙: 반드시 0.0.0.0:8080 에서 HTTP 서비스해야 합니다 (배포 규격). +# 배포 규격: 0.0.0.0 에서 HTTP 서비스. 포트는 PORT 환경변수(기본 3000)를 따른다. +# (Coolify 리버스 프록시가 기본 3000 포트로 라우팅 — sample 프로젝트와 동일) +import os + from flask import Flask app = Flask(__name__) @@ -308,4 +311,5 @@ def home(): if __name__ == "__main__": - app.run(host="0.0.0.0", port=8080) + port = int(os.environ.get("PORT", "3000")) + app.run(host="0.0.0.0", port=port)