generated from playground/template-python
Coolify 배포용 포트 정렬 (8080 → 3000) — Bad Gateway 수정
Coolify 리버스 프록시는 컨테이너 3000 포트로 라우팅하는데(sample 프로젝트와 동일, MANUAL의 'Port: 3000'), 앱이 8080에서 떠서 프록시가 대상에 닿지 못해 502 Bad Gateway가 발생했다. sample을 참고해 3000으로 정렬한다. - main.py: 포트를 PORT 환경변수(기본 3000)에서 읽도록 변경. host는 0.0.0.0 유지. - Dockerfile: ENV PORT=3000 / EXPOSE 3000, 주석을 Kubero→Coolify 로 갱신. - CLAUDE.md: 배포 규격을 Coolify(포트 3000, PORT 환경변수)로 갱신.
This commit is contained in:
11
CLAUDE.md
11
CLAUDE.md
@@ -1,11 +1,12 @@
|
|||||||
## 배포
|
## 배포 (Coolify)
|
||||||
|
|
||||||
1. 변경 사항을 커밋/푸시합니다.
|
1. 변경 사항을 Gitea에 커밋/푸시합니다.
|
||||||
2. Kubero(https://kubero.bokdev.in)에서 배포하면
|
2. Coolify(https://coolify.bokdev.in)가 이 **Dockerfile**로 자동 빌드·배포합니다.
|
||||||
`http://<내앱이름>.apps.bokdev.in` 으로 접속됩니다.
|
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`에 꼭 추가하세요.
|
- 새 패키지를 쓰면 `requirements.txt`에 꼭 추가하세요.
|
||||||
- 파일에 저장한 데이터는 재배포하면 사라집니다.
|
- 파일에 저장한 데이터는 재배포하면 사라집니다.
|
||||||
12
Dockerfile
12
Dockerfile
@@ -1,6 +1,6 @@
|
|||||||
# 로컬(podman)과 Kubero 자동빌드가 공유하는 단일 Dockerfile.
|
# 로컬(podman)과 Coolify 자동빌드가 공유하는 단일 Dockerfile.
|
||||||
# - 로컬: podman build -t maze-runner . && podman run --rm -p 8080:8080 maze-runner
|
# - 로컬: podman build -t maze-runner . && podman run --rm -p 3000:3000 maze-runner
|
||||||
# - 배포: git push → Kubero가 이 Dockerfile로 빌드/배포 (http://<앱이름>.apps.bokdev.in)
|
# - 배포: Gitea push → Coolify가 이 Dockerfile로 빌드/배포 (https://<앱이름>.apps.bokdev.in)
|
||||||
FROM python:3.12-slim
|
FROM python:3.12-slim
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@@ -12,10 +12,10 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|||||||
# 앱 소스
|
# 앱 소스
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
# 배포 규격: 0.0.0.0 / 3000 포트 (Coolify 리버스 프록시 기본 라우팅 포트 — sample 과 동일)
|
||||||
ENV PYTHONUNBUFFERED=1 \
|
ENV PYTHONUNBUFFERED=1 \
|
||||||
PORT=8080
|
PORT=3000
|
||||||
# 배포 규격: 0.0.0.0 의 8080 포트
|
EXPOSE 3000
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
# 비루트 실행
|
# 비루트 실행
|
||||||
RUN useradd --create-home --uid 10001 appuser
|
RUN useradd --create-home --uid 10001 appuser
|
||||||
|
|||||||
8
main.py
8
main.py
@@ -1,5 +1,8 @@
|
|||||||
# 200x100 랜덤 미로 생성 + 다익스트라 탐색 시각화 앱
|
# 200x100 랜덤 미로 생성 + 다익스트라 탐색 시각화 앱
|
||||||
# 규칙: 반드시 0.0.0.0:8080 에서 HTTP 서비스해야 합니다 (배포 규격).
|
# 배포 규격: 0.0.0.0 에서 HTTP 서비스. 포트는 PORT 환경변수(기본 3000)를 따른다.
|
||||||
|
# (Coolify 리버스 프록시가 기본 3000 포트로 라우팅 — sample 프로젝트와 동일)
|
||||||
|
import os
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -308,4 +311,5 @@ def home():
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user