c9f5915419
This reverts commit 50c5039ec0.
127 lines
4.0 KiB
Bash
Executable File
127 lines
4.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# chatbot.exdev.co.kr — Agent 2.0 전체 스택 중지
|
|
#
|
|
# ./server-dev/stop-all-server.sh
|
|
# ./server-dev/stop-all-server.sh --keep-caddy
|
|
# ./server-dev/stop-all-server.sh --purge-mongo
|
|
# ./server-dev/stop-all-server.sh --purge-oracle
|
|
# ./server-dev/stop-all-server.sh --keep-oracle
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SERVER_DEV_DIR="${ROOT_DIR}/server-dev"
|
|
RUN_DIR="${SERVER_DEV_DIR}/run"
|
|
|
|
RAG_DIR="${ROOT_DIR}/exAiChatBot-chatbot2.0-agent"
|
|
APP_DIR="${ROOT_DIR}/chatbotApp-chatbot2.0-agent"
|
|
COMPOSE_SERVER="${RAG_DIR}/docker-compose.server.yml"
|
|
COMPOSE_CADDY="${SERVER_DEV_DIR}/docker-compose.caddy.yml"
|
|
COMPOSE_ORACLE="${SERVER_DEV_DIR}/docker-compose.oracle.yml"
|
|
|
|
MONGO_CONTAINER="${MONGO_CONTAINER:-exaichatbot-agent-mongo}"
|
|
ORACLE_CONTAINER="${ORACLE_CONTAINER:-exaichatbot-agent-oracle-troad}"
|
|
LEGACY_STACK_DIR="${LEGACY_STACK_DIR:-/Users/aidev/dev/exAIChatbot2.0}"
|
|
|
|
KEEP_CADDY=false
|
|
KEEP_ORACLE=false
|
|
PURGE_MONGO=false
|
|
PURGE_ORACLE=false
|
|
STOP_HOST_AI=false
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--keep-caddy) KEEP_CADDY=true ;;
|
|
--keep-oracle) KEEP_ORACLE=true ;;
|
|
--purge-mongo) PURGE_MONGO=true ;;
|
|
--purge-oracle) PURGE_ORACLE=true ;;
|
|
--stop-host-ai) STOP_HOST_AI=true ;;
|
|
-h|--help)
|
|
sed -n '2,10p' "$0"
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
export PATH="/opt/homebrew/bin:/usr/local/bin:/Applications/Docker.app/Contents/Resources/bin:${PATH}"
|
|
|
|
log() { echo "[$(date '+%H:%M:%S')] $*"; }
|
|
|
|
stop_pid_file() {
|
|
local name="$1" pid_file="$2"
|
|
[[ -f "${pid_file}" ]] || return 0
|
|
local pid
|
|
pid="$(cat "${pid_file}")"
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
log "${name} 종료 (PID ${pid})"
|
|
kill "$pid" 2>/dev/null || true
|
|
sleep 2
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
fi
|
|
rm -f "${pid_file}"
|
|
}
|
|
|
|
stop_port() {
|
|
local port="$1"
|
|
local pids
|
|
pids="$(lsof -tiTCP:"${port}" -sTCP:LISTEN 2>/dev/null || true)"
|
|
if [[ -n "${pids}" ]]; then
|
|
log ":${port} 점유 프로세스 종료"
|
|
kill ${pids} 2>/dev/null || true
|
|
sleep 1
|
|
kill -9 ${pids} 2>/dev/null || true
|
|
fi
|
|
}
|
|
|
|
log "Agent 2.0 스택 중지..."
|
|
|
|
stop_pid_file "chatbotApi" "${RUN_DIR}/chatbot-api.pid"
|
|
stop_pid_file "kakaoChatbotSkill" "${RUN_DIR}/kakao-skill.pid"
|
|
for port in 8086 8083; do stop_port "${port}"; done
|
|
|
|
if [[ -d "${APP_DIR}" ]]; then
|
|
docker rm -f ex-chatbot-app-web 2>/dev/null || true
|
|
(cd "${APP_DIR}" && docker compose down --remove-orphans 2>/dev/null) || true
|
|
log "chatbotApp 중지"
|
|
fi
|
|
|
|
if [[ -f "${COMPOSE_SERVER}" ]]; then
|
|
(cd "${RAG_DIR}" && docker compose -f "${COMPOSE_SERVER}" down --remove-orphans 2>/dev/null) || true
|
|
log "RAG/Qdrant/Admin 중지"
|
|
fi
|
|
|
|
if ! $KEEP_CADDY && [[ -f "${COMPOSE_CADDY}" ]]; then
|
|
(cd "${SERVER_DEV_DIR}" && docker compose -f docker-compose.caddy.yml down --remove-orphans 2>/dev/null) || true
|
|
docker rm -f exaichatbot-agent-caddy 2>/dev/null || true
|
|
log "Caddy(HTTPS) 중지"
|
|
fi
|
|
|
|
if $KEEP_ORACLE; then
|
|
log "Oracle TROAD 유지 (--keep-oracle)"
|
|
elif [[ -f "${COMPOSE_ORACLE}" ]]; then
|
|
if $PURGE_ORACLE; then
|
|
(cd "${SERVER_DEV_DIR}" && docker compose -f docker-compose.oracle.yml down -v --remove-orphans 2>/dev/null) || true
|
|
docker rm -f "${ORACLE_CONTAINER}" 2>/dev/null || true
|
|
log "Oracle TROAD 컨테이너·볼륨 삭제 (${ORACLE_CONTAINER})"
|
|
else
|
|
(cd "${SERVER_DEV_DIR}" && docker compose -f docker-compose.oracle.yml stop 2>/dev/null) || true
|
|
docker stop "${ORACLE_CONTAINER}" 2>/dev/null || true
|
|
log "Oracle TROAD 중지 (${ORACLE_CONTAINER}, 데이터 볼륨 유지)"
|
|
fi
|
|
fi
|
|
|
|
if $PURGE_MONGO; then
|
|
docker stop "${MONGO_CONTAINER}" 2>/dev/null || true
|
|
docker rm -f "${MONGO_CONTAINER}" 2>/dev/null || true
|
|
log "MongoDB 컨테이너 삭제 (${MONGO_CONTAINER})"
|
|
else
|
|
docker stop "${MONGO_CONTAINER}" 2>/dev/null || true
|
|
log "MongoDB 중지 (${MONGO_CONTAINER})"
|
|
fi
|
|
|
|
if $STOP_HOST_AI && [[ -f "${LEGACY_STACK_DIR}/scripts/exdev/stop-host-ai.sh" ]]; then
|
|
bash "${LEGACY_STACK_DIR}/scripts/exdev/stop-host-ai.sh" || true
|
|
log "호스트 AI 중지"
|
|
fi
|
|
|
|
log "완료"
|