feat(deploy): 도커 배포(deploy/docker: compose+Dockerfile+deploy.sh) — 우리 환경용. 렌더러가 FabriX/OpenRouter 템플릿 자동 선택, 호스트 변수화. bare deploy.sh 는 git pull 포함. Phoenix 도커 compose

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
lee-hyeon-cheol
2026-09-22 18:09:48 +09:00
co-authored by Claude Fable 5.1
parent f55e673cb5
commit ea1fd350da
13 changed files with 232 additions and 11 deletions
+35
View File
@@ -0,0 +1,35 @@
# CodeAssist 백엔드 — 도커 배포 (우리 환경용)
고객사(도커 없음)는 `5_django_backend/deploy.sh`(bare) 를 씀. 여긴 도커 되는 서버(20.200.170.37 등)용.
둘 다 같은 저장소 구조를 쓰고, 배포 스크립트만 다름:
| 환경 | 스크립트 | 하는 일 |
|---|---|---|
| 우리(도커) | `deploy/docker/deploy.sh [up\|update\|stop\|logs\|status]` | (update 면 git pull) → 이미지 빌드 → be·opencode 기동 → 헬스 확인 |
| 고객사(bare) | `deploy.sh` | git pull → .env 키 보정 → migrate → 렌더 → opencode-bin·uvicorn 재기동 → 헬스 |
## 처음 한 번
```bash
cd <저장소>/code-assistant/5_django_backend/deploy/docker # 고객사 repo 구조 기준. 우리 git 이면 5_django_backend/deploy/docker
cp .env.example .env && vi .env # OPENROUTER_API_KEY, PHOENIX_HOST 정도만 채우면 됨
./deploy.sh
```
컨테이너 2개: `be`(Django, 바깥 `BE_PORT`=8080) + `opencode`(OpenCode 1.18.6). 저장소의 `opencode/` 폴더를 둘 다 bind 로 봐서
AGENTS.md·위키·커스텀 도구가 그대로 먹고, be 가 렌더한 `opencode.json` 을 opencode 가 바로 읽음.
## 이후
```bash
./deploy.sh update # 최신 코드로 갱신
./deploy.sh status # 상태 + 헬스
./deploy.sh logs
```
## 알아둘 것
- LLM: `.env``AAF_FABRIX_*` 가 없으면 렌더러가 OpenRouter 템플릿(`opencode/opencode.openrouter.json.tmpl`)을 고름. 고객사는 FabriX 템플릿.
- DB: `DB_HOST` 비우면 SQLite(`be_data` 볼륨). 팀 PostgreSQL 쓰려면 DB_* 채움(스키마 `codeassist`).
- SAP 조회(MCP): 같은 서버에 abap-opencode compose 가 떠 있으면 그 `mcp` 컨테이너를 쓸 수 있음 — 두 compose 를 같은 네트워크로 묶어야 함(아직 안 함). 비우면 꺼짐.
- 관측: `PHOENIX_HOST=http://<서버>:6006` (`deploy/phoenix/docker-compose.yml` 로 띄운 것). 프로젝트 `codeassist`.
- 앱(Tauri) 쪽은 `2_frontend/.env.production``VITE_API_BASE_URL` 을 이 서버로 바꿔 빌드해야 붙음.