From 811d89c3e5d7a73b78c25741f750705dff20d32f Mon Sep 17 00:00:00 2001 From: rookedsysc Date: Sat, 22 Nov 2025 21:27:28 +0900 Subject: [PATCH 1/3] =?UTF-8?q?build:=20docker=20compose=20gunicorn=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3a58183..bfdd160 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -43,7 +43,7 @@ services: echo 'Running migrations...' && alembic upgrade head && echo 'Starting server...' && - uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload + gunicorn -w 4 -k uvicorn.workers.UvicornWorker app.main:app --bind 0.0.0.0:8000 " restart: unless-stopped From 3b49213382cf348ced86137f2355ae258e43af3d Mon Sep 17 00:00:00 2001 From: rookedsysc Date: Sat, 22 Nov 2025 21:27:44 +0900 Subject: [PATCH 2/3] =?UTF-8?q?detete:=20health=20check=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 439cb15..e03a453 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -60,9 +60,5 @@ USER appuser # 포트 노출 EXPOSE 8000 -# 헬스체크 -HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ - CMD python -c "import requests; requests.get('http://localhost:8000/health', timeout=5)" - # 애플리케이션 실행 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] From d71ce2d069fd62e05e6b2c5048afebc4f2aded38 Mon Sep 17 00:00:00 2001 From: rookedsysc Date: Sat, 22 Nov 2025 21:28:03 +0900 Subject: [PATCH 3/3] =?UTF-8?q?config:=20gunicorn=20dependency=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/pyproject.toml | 1 + backend/uv.lock | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 86850e5..ab92ae1 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -21,6 +21,7 @@ dependencies = [ "uvicorn>=0.38.0", "apscheduler>=3.10.0", "ruff>=0.14.6", + "gunicorn>=23.0.0", ] [dependency-groups] diff --git a/backend/uv.lock b/backend/uv.lock index 6c7ef32..73c391d 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -814,6 +814,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/44/342c4591db50db1076b8bda86ed0ad59240e3e1da17806a4cf10a6d0e447/greenlet-3.2.4-cp39-cp39-win_amd64.whl", hash = "sha256:d2e685ade4dafd447ede19c31277a224a239a0a1a4eca4e6390efedf20260cfb", size = 298533, upload-time = "2025-08-07T13:56:34.168Z" }, ] +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, +] + [[package]] name = "h11" version = "0.16.0" @@ -1008,6 +1020,7 @@ dependencies = [ { name = "cryptography" }, { name = "fastapi" }, { name = "greenlet" }, + { name = "gunicorn" }, { name = "openai" }, { name = "pydantic-settings", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "pydantic-settings", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, @@ -1040,6 +1053,7 @@ requires-dist = [ { name = "cryptography", specifier = ">=46.0.3" }, { name = "fastapi", specifier = ">=0.121.3" }, { name = "greenlet", specifier = ">=3.2.4" }, + { name = "gunicorn", specifier = ">=23.0.0" }, { name = "openai", specifier = ">=2.7.1" }, { name = "pydantic-settings", specifier = ">=2.11.0" }, { name = "pymysql", specifier = ">=1.1.2" },