o2o-negosium-original/lps/run_docker.sh
민헌 dc8c288f68 feat(lps): docker-compose 에 lps-admin 추가 + 환경설정 config.local.toml 단일화
- lps-admin 컨테이너화: Vite 정적 빌드 → nginx, /v1·/healthz·/readyz 를
  lps-api:9600 으로 동일출처 프록시(빌드 타임 API URL 주입 불필요)
- lps-api/worker: APP_ENV=local 고정 + DB_HOST override(도메인 backend·negodata·agent
  와 동일 패턴), config.<env>.toml 마운트 방식 폐기
- server_configs 에 DB 접속 env override(_apply_db_env_override) 복원
- config.dev/prod.toml.example 제거 — 환경 구분 없이 config.local.toml 하나
  (prod 서버도 그 서버의 config.local.toml + docker compose up -d)
- run_docker.sh 환경 선택 제거·lps-admin 포함, README·operations 문서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 11:54:32 +09:00

41 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# LPS Docker 실행(대화형) — lps-api/lps-worker/lps-admin 을 관리한다.
# 환경 구분 없음(도메인 backend·negodata·agent 와 동일): 항상 config.local.toml.
# 어느 서버든 그 서버의 config.local.toml 값으로 뜬다 — prod 서버엔 prod 값을 채워두면 그만.
# 호스트(비도커) 실행은 run_local_server.sh / run_local_worker.sh 를 사용.
set -euo pipefail
cd "$(dirname "$0")/.." # 리포 루트(docker-compose.yml 위치)
echo "── LPS Docker 실행 ──"
CFG="lps/config/config.local.toml"
if [[ ! -f "$CFG" ]]; then
echo "[warn] $CFG 가 없습니다 (시크릿 포함, 미커밋 — 서버마다 직접 준비)."
read -rp "example 을 복사해 생성할까요? [Y/n] " yn
if [[ "${yn:-Y}" =~ ^[Yy] ]]; then
cp "lps/config/config.local.toml.example" "$CFG"
echo "[ok] $CFG 생성 — DB 접속·API 키 등 값을 채운 뒤 다시 실행하세요."
fi
exit 0
fi
# prod 서버 안전 점검: guard 키가 비어 있으면 API 가 개방 모드로 뜬다 — 명시적 확인.
if grep -qE '^\s*api_keys\s*=\s*\[\s*\]' "$CFG"; then
echo "[warn] [WebServerConfig].api_keys 가 비어 있습니다 → API 개방 모드(무인증). prod 라면 키를 채우세요."
read -rp "그래도 계속할까요? [y/N] " go
[[ "${go:-N}" =~ ^[Yy] ]] || { echo "중단합니다."; exit 1; }
fi
# 운영(리버스프록시 뒤)에서 API 를 외부에 열지 않으려면 실행 전에: export LPS_API_BIND=127.0.0.1
echo ""
echo "설정: $CFG · API 바인드: ${LPS_API_BIND:-0.0.0.0}"
read -rp "동작 선택 [1] 시작/재빌드(기본) [2] 재시작 [3] 중지 [4] 로그 : " act
case "${act:-1}" in
1) docker compose up -d --build lps-api lps-worker lps-admin autoheal
echo "[ok] 기동 — admin: http://localhost:3400 · 로그의 'API guard ON/개방 모드' · 'DECODO 프리플라이트' 확인: docker compose logs -f lps-api lps-worker lps-admin" ;;
2) docker compose restart lps-api lps-worker lps-admin ;;
3) docker compose stop lps-api lps-worker lps-admin ;;
4) docker compose logs -f lps-api lps-worker lps-admin ;;
*) echo "[error] 알 수 없는 선택: $act"; exit 1 ;;
esac