- 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>
41 lines
2.2 KiB
Bash
Executable File
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
|