Add production Dockerfile for backend deployment
This commit is contained in:
13
backend/.dockerignore
Normal file
13
backend/.dockerignore
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
.venv
|
||||||
|
__pycache__
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
.pytest_cache
|
||||||
|
.ruff_cache
|
||||||
|
tests
|
||||||
|
.env
|
||||||
|
.env.development
|
||||||
|
*.log
|
||||||
19
backend/Dockerfile
Normal file
19
backend/Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
|
PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install runtime dependencies from local package metadata.
|
||||||
|
COPY pyproject.toml /app/pyproject.toml
|
||||||
|
COPY app /app/app
|
||||||
|
COPY scripts /app/scripts
|
||||||
|
COPY README.md /app/README.md
|
||||||
|
|
||||||
|
RUN pip install --no-cache-dir --upgrade pip && \
|
||||||
|
pip install --no-cache-dir .
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
@@ -12,6 +12,29 @@ psql "$DATABASE_URL" -f scripts/init_schema.sql
|
|||||||
./scripts/start_dev.sh
|
./scripts/start_dev.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Docker (VPS / Production)
|
||||||
|
|
||||||
|
Build image:
|
||||||
|
```bash
|
||||||
|
cd backend
|
||||||
|
docker build -t memberapi-backend:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
Run container:
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name memberapi-backend \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-p 127.0.0.1:8000:8000 \
|
||||||
|
--env-file .env \
|
||||||
|
memberapi-backend:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Health check:
|
||||||
|
```bash
|
||||||
|
curl http://127.0.0.1:8000/healthz
|
||||||
|
```
|
||||||
|
|
||||||
## Keycloak env
|
## Keycloak env
|
||||||
|
|
||||||
- Required:
|
- Required:
|
||||||
|
|||||||
@@ -87,3 +87,7 @@ npm run dev
|
|||||||
1. 建立 `api_client`。
|
1. 建立 `api_client`。
|
||||||
2. 用 `X-Client-Key` + `X-API-Key` 呼叫 `/internal/*`。
|
2. 用 `X-Client-Key` + `X-API-Key` 呼叫 `/internal/*`。
|
||||||
3. 驗證未授權 key 會被拒絕。
|
3. 驗證未授權 key 會被拒絕。
|
||||||
|
|
||||||
|
## 8) VPS Docker 啟動(Backend)
|
||||||
|
- Dockerfile: [backend/Dockerfile](../backend/Dockerfile)
|
||||||
|
- 建置與啟動指令:參考 [backend/README.md](../backend/README.md) 的 `Docker (VPS / Production)` 章節。
|
||||||
|
|||||||
Reference in New Issue
Block a user