c9f5915419
This reverts commit 50c5039ec0.
105 lines
2.9 KiB
Bash
Executable File
105 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# local-dev/start-all.sh 로 기동한 프로세스·컨테이너 중지
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
LOCAL_DEV_DIR="${ROOT_DIR}/local-dev"
|
|
RUN_DIR="${LOCAL_DEV_DIR}/run"
|
|
|
|
RAG_DIR="${ROOT_DIR}/exAiChatBot-chatbot2.0-agent"
|
|
APP_DIR="${ROOT_DIR}/chatbotApp-chatbot2.0-agent"
|
|
MONGO_CONTAINER="${MONGO_CONTAINER:-ex-chatbot-mongo-local}"
|
|
COMPOSE_LOCAL="${RAG_DIR}/docker-compose.local.yml"
|
|
|
|
STOP_MONGO=false
|
|
STOP_TUNNEL=false
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--mongo) STOP_MONGO=true ;;
|
|
--tunnel) STOP_TUNNEL=true ;;
|
|
-h|--help)
|
|
echo "Usage: $0 [--mongo] [--tunnel]"
|
|
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 "로컬 exChatbot 스택 중지..."
|
|
|
|
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_LOCAL}" ]]; then
|
|
(cd "${RAG_DIR}" && docker compose -f docker-compose.local.yml down --remove-orphans 2>/dev/null) || true
|
|
log "RAG/Admin 중지 (exchatbot-local, 원격 Mongo/Qdrant는 유지)"
|
|
fi
|
|
|
|
# legacy slim compose 잔여 컨테이너 정리
|
|
if [[ -d "${RAG_DIR}" ]]; then
|
|
(cd "${RAG_DIR}" && docker compose -f docker-compose-slim.yml down --remove-orphans 2>/dev/null) || true
|
|
fi
|
|
|
|
for name in \
|
|
exaichatbot-chatbot20-agent-api-1 \
|
|
exaichatbot-chatbot20-agent-admin-1 \
|
|
exaichatbot-chatbot20-agent-qdrant-1 \
|
|
exaichatbot-chatbot20-agent-embed-1 \
|
|
exaichatbot-chatbot20-agent-index-1; do
|
|
docker rm -f "${name}" 2>/dev/null || true
|
|
done
|
|
|
|
if $STOP_MONGO; then
|
|
docker stop "${MONGO_CONTAINER}" 2>/dev/null || true
|
|
log "MongoDB 중지 (${MONGO_CONTAINER})"
|
|
fi
|
|
|
|
if $STOP_TUNNEL; then
|
|
stop_pid_file "SSH 터널" "${RUN_DIR}/tunnel.pid"
|
|
pkill -f "ssh -[fN].*-L ${LLM_PORT:-16000}:127.0.0.1:${LLM_PORT:-16000}" 2>/dev/null || true
|
|
pkill -f "ssh -f -N.*16000:127.0.0.1:16000" 2>/dev/null || true
|
|
log "SSH 터널 종료"
|
|
fi
|
|
|
|
log "완료"
|