# 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://host.docker.internal:6006`(같은 서버; 공인 IP 는 컨테이너 안에서 안 닿음) (`deploy/phoenix/docker-compose.yml` 로 띄운 것). 프로젝트 `codeassist`. - 앱(Tauri) 쪽은 `2_frontend/.env.production` 의 `VITE_API_BASE_URL` 을 이 서버로 바꿔 빌드해야 붙음.