From b06dadebc3438eaae70121a0314cd4e1241a11fb Mon Sep 17 00:00:00 2001 From: lee-hyeon-cheol Date: Wed, 23 Sep 2026 09:50:39 +0900 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20=EC=9A=B0=EB=A6=AC=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20CodeAssist=20=EC=97=90=20SAP=20MCP=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=E2=80=94=20abap-opencode=20mcp=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=84=88=20=EB=84=A4=ED=8A=B8=EC=9B=8C?= =?UTF-8?q?=ED=81=AC=EC=97=90=20=EB=B6=99=EC=9E=84(MCP=5FAPI=5FKEY=20?= =?UTF-8?q?=EC=9E=88=EC=9C=BC=EB=A9=B4=20=EC=9E=90=EB=8F=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- 5_django_backend/deploy/docker/.env.example | 4 +++- 5_django_backend/deploy/docker/README.md | 2 +- 5_django_backend/deploy/docker/deploy.sh | 3 +++ 5_django_backend/deploy/docker/docker-compose.mcp.yml | 10 ++++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 5_django_backend/deploy/docker/docker-compose.mcp.yml diff --git a/5_django_backend/deploy/docker/.env.example b/5_django_backend/deploy/docker/.env.example index c5d496f..72c085b 100644 --- a/5_django_backend/deploy/docker/.env.example +++ b/5_django_backend/deploy/docker/.env.example @@ -26,10 +26,12 @@ CORS_ORIGINS=http://tauri.localhost,tauri://localhost,http://localhost:15173 STREAM_FIRST_EVENT_TIMEOUT_S=300 STREAM_TURN_TIMEOUT_S=600 -# SAP 조회 MCP — 같은 서버의 abap-opencode compose 에 mcp 컨테이너가 있으면 그 주소. 비우면 끔 +# SAP 조회 MCP — 같은 서버 abap-opencode 의 mcp 컨테이너를 씀. 키는 abap-opencode web/deploy/.env 의 MCP_API_KEY 와 같게. +# 키가 있으면 deploy.sh 가 그 네트워크(MCP_NETWORK)에 붙여줌. 비우면 끔 MCP_HOST=mcp MCP_PORT=3200 MCP_API_KEY= +MCP_NETWORK=abap-opencode_default # 관측(Phoenix) — deploy/phoenix 로 띄운 주소. 비우면 안 보냄 PHOENIX_HOST=http://host.docker.internal:6006 # 같은 서버 Phoenix. 다른 서버면 그 사설 IP diff --git a/5_django_backend/deploy/docker/README.md b/5_django_backend/deploy/docker/README.md index 0548627..a64bde8 100644 --- a/5_django_backend/deploy/docker/README.md +++ b/5_django_backend/deploy/docker/README.md @@ -30,6 +30,6 @@ AGENTS.md·위키·커스텀 도구가 그대로 먹고, be 가 렌더한 `openc - 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 를 같은 네트워크로 묶어야 함(아직 안 함). 비우면 꺼짐. +- SAP 조회(MCP): 같은 서버 abap-opencode 의 `mcp` 컨테이너를 씀. `.env` 에 `MCP_API_KEY`(abap-opencode 것과 같은 값) 넣으면 deploy.sh 가 `docker-compose.mcp.yml` 로 opencode 를 그 네트워크에 붙임. 비우면 꺼짐. - 관측: `PHOENIX_HOST=http://host.docker.internal:6006`(같은 서버; 공인 IP 는 컨테이너 안에서 안 닿음) (`deploy/phoenix/docker-compose.yml` 로 띄운 것). 프로젝트 `codeassist`. - 앱(Tauri) 쪽은 `2_frontend/.env.production` 의 `VITE_API_BASE_URL` 을 이 서버로 바꿔 빌드해야 붙음. diff --git a/5_django_backend/deploy/docker/deploy.sh b/5_django_backend/deploy/docker/deploy.sh index 5400398..ee7391a 100644 --- a/5_django_backend/deploy/docker/deploy.sh +++ b/5_django_backend/deploy/docker/deploy.sh @@ -17,6 +17,8 @@ docker compose version >/dev/null 2>&1 || { echo "docker compose v2 없음"; exi [ -f .env ] || { echo ".env 없음 — cp .env.example .env 후 채워"; exit 1; } set -a; . ./.env; set +a PORT="${BE_PORT:-8080}"; BASE="http://localhost:${PORT}/api/v1" +# MCP 키가 있으면 abap-opencode 의 mcp 컨테이너 네트워크에 붙음(docker-compose.mcp.yml) +if [ -n "${MCP_API_KEY:-}" ]; then export COMPOSE_FILE="docker-compose.yml:docker-compose.mcp.yml"; fi case "$CMD" in stop) docker compose down; echo "종료(볼륨 유지)"; exit 0 ;; @@ -36,4 +38,5 @@ for _ in $(seq 1 60); do curl -fsS -m 3 "$BASE/health" >/dev/null 2>&1 && break; curl -fsS -m 5 "$BASE/health" || { echo "안 떴음 → ./deploy.sh logs"; docker compose ps; exit 1; } echo echo "-- OpenCode 설정(렌더 결과) 모델:"; grep -oE '"model": *"[^"]+"' ../../opencode/opencode.json || true +echo "-- SAP MCP: $(grep -oE '"enabled": *[a-z]+' ../../opencode/opencode.json) (true 면 켜짐)" echo "-- 앱 주소: http://$(hostname -I 2>/dev/null | awk '{print $1}'):${PORT}/api/v1" diff --git a/5_django_backend/deploy/docker/docker-compose.mcp.yml b/5_django_backend/deploy/docker/docker-compose.mcp.yml new file mode 100644 index 0000000..4cebb6b --- /dev/null +++ b/5_django_backend/deploy/docker/docker-compose.mcp.yml @@ -0,0 +1,10 @@ +# SAP 조회 MCP 붙이기 — 같은 서버에 떠 있는 abap-opencode 의 mcp 컨테이너를 씀(따로 안 띄움). +# opencode 컨테이너를 abap-opencode 네트워크에도 걸어서 http://mcp:3200 이 보이게 함. +# deploy.sh 가 .env 에 MCP_API_KEY 가 있으면 자동으로 이 파일을 같이 씀. +services: + opencode: + networks: [default, abapnet] +networks: + abapnet: + external: true + name: ${MCP_NETWORK:-abap-opencode_default}