Files
CloudSearch/source_clean/deploy.sh

109 lines
6.1 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e
# =============================================================================
# CloudSearch 荳€髞ョ驛ィ鄂イ閼壽悽
# 逕ィ豕<EFBDA8>:
# curl -sS https://gitea.timxx.cn/admin/CloudSearch/raw/branch/master/source_clean/deploy.sh | bash
#
# 蜿ッ騾臥識蠅<E8AD98>序驥擾シ磯Κ鄂イ蜑崎ョセ鄂ョ<E98482><EFBDAE>:
# CORS_ORIGIN - 鄂醍ォ吝沺蜷搾シ悟ソ<E6829F>。ォ (螯<> https://your-domain.com)
# JWT_SECRET - JWT 遲セ蜷榊ッ<E6A68A>徴 (逡咏ゥコ閾ェ蜉ィ逕滓<E98095>)
# ADMIN_PASSWORD - 邂。逅<EFBDA1>遭蟇<E981AD><E89F87><EFBFBD> (逡咏ゥコ閾ェ蜉ィ逕滓<E98095>)
# REDIS_URL - Redis 霑樊磁 (鮟倩ョ、: redis://redis:6379)
# LOG_LEVEL - 譌・蠢礼コァ蛻ォ (鮟倩ョ、: info)
# DEPLOY_DIR - 驛ィ鄂イ逶ョ蠖<EFBDAE> (鮟倩ョ、: /opt/cloudsearch)
# =============================================================================
REPO_URL="https://gitea.timxx.cn/admin/CloudSearch.git"
IMAGE="gitea.timxx.cn/admin/cloudsearch:latest"
DEPLOY_DIR="${DEPLOY_DIR:-/opt/cloudsearch}"
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
err() { echo -e "${RED}[ERROR]${NC} $*"; }
command -v docker &>/dev/null || { err "Docker 譛ェ螳芽」<E88ABD>シ瑚ッキ蜈亥ョ芽」<E88ABD> Docker"; exit 1; }
# 笏€笏€ 譽€譟・蠢<EFBDA5>。ォ蜿よ焚 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
if [ -z "$CORS_ORIGIN" ]; then
PUBLIC_IP=$(curl -s --connect-timeout 3 ifconfig.me 2>/dev/null || curl -s --connect-timeout 3 ip.sb 2>/dev/null || echo "")
if [ -n "$PUBLIC_IP" ]; then
CORS_ORIGIN="http://${PUBLIC_IP}:9527"
warn "譛ェ隶セ鄂ョ CORS_ORIGIN<49><EFBFBD>蜉ィ譽€豬倶クコ: ${CORS_ORIGIN}"
warn "螯る怙閾ェ螳壻ケ臥ス大沺蜷搾シ瑚ッキ: CORS_ORIGIN=https://your.domain.com curl ... | bash"
else
CORS_ORIGIN="http://localhost:9527"
warn "譛ェ隗ョ<EFBFBD> CORS_ORIGIN<49>御スソ逕ィ鮟倩ョ、: ${CORS_ORIGIN}"
fi
fi
# 笏€笏€ 諡牙叙莉灘コ<E78198> 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
info "諡牙叙莉灘コ<E78198>..."
if [ -d "$DEPLOY_DIR/.git" ]; then
cd "$DEPLOY_DIR" && git pull --ff-only origin master 2>/dev/null || true
else
rm -rf "$DEPLOY_DIR"
git clone --depth 1 "$REPO_URL" "$DEPLOY_DIR"
fi
cd "$DEPLOY_DIR/source_clean"
# 笏€笏€ 蛻<>困蛻ー髟懷ワ讓。蠑<EFBDA1> 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
if grep -q '^ build:' docker-compose.yml 2>/dev/null; then
info "驟咲スョ髟懷ワ讓。蠑<EFBDA1>..."
sed -i 's/^ build:/ # build:/' docker-compose.yml
sed -i 's/^ context:/ # context:/' docker-compose.yml
sed -i 's/^ dockerfile:/ # dockerfile:/' docker-compose.yml
sed -i 's|^ # image: gitea.timxx.cn/admin/cloudsearch:latest| image: gitea.timxx.cn/admin/cloudsearch:latest|' docker-compose.yml
fi
# 笏€笏€ 逕滓<E98095><EFBFBD>徴 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
JWT_SECRET="${JWT_SECRET:-$(openssl rand -hex 32)}"
ADMIN_PASSWORD="${ADMIN_PASSWORD:-$(openssl rand -base64 12 | tr -d '=+/' | head -c 16)}"
# 笏€笏€ 逕滓<E98095> .env 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
cat > .env <<ENVEOF
CORS_ORIGIN=${CORS_ORIGIN}
JWT_SECRET=${JWT_SECRET}
ADMIN_PASSWORD=${ADMIN_PASSWORD}
REDIS_URL=${REDIS_URL:-redis://redis:6379}
LOG_LEVEL=${LOG_LEVEL:-info}
ENVEOF
info "邂。逅<EFBFBD>遭: admin / ${ADMIN_PASSWORD}"
# 笏€笏€ 驛ィ鄂イ 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
info "諡牙叙髟懷ワ..."
docker compose pull app 2>/dev/null || true
info "蛛懈ュ「譌ァ譛榊苅..."
docker compose down --remove-orphans 2>/dev/null || true
info "蜷ッ蜉ィ譛榊苅..."
docker compose up -d
# 笏€笏€ 遲牙セ<E78999>ーア扈ェ 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€
info "遲牙セ<E78999>恪蜉。蟆ア扈ェ..."
for i in $(seq 1 15); do
if curl -s -o /dev/null -w '%{http_code}' http://localhost:9527/health 2>/dev/null | grep -q '200'; then
break
fi
sleep 2
done
# 笏€笏€ 蠑コ蛻カ蜀吝<E89C80>邂。逅<EFBDA1>遭蟇<E981AD><E89F87><EFBFBD>(蜿雁酔譌カ螟<EFBDB6>岼蠖募芦豐。譏ッ蜿鷹㍾蜷ッ,逶エ謗・譖エ譁ー謨ー謐ョ蠎<EFBDAE>) 笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€)・ケ匸€許"w満/<2F>2[楴<>B芳c明ククク<EFBDB8>)ヘア封タ€フ)多痕癖&癜戟
アスユ閃腐ノ今}チタ∋ス藻€オ楳<EFBDB5>)鎖ケヘミ♂宰蠱ミ€<EFBFBD>ノ頁ユ・ノ箱揄宰蠱ムゥフ悧<EFBFBD>)鎖ケヘミ<EFBFBD><11><><EFBFBD><EFBFBD>ノ頁ユ・ノ箱揄篇ム癖オヘナア・ム販悧<E8B2A9>)鎖ケヘミ¢<EFBFBD><EFBFBD>ケ舗<EFBFBD><11><><EFBFBD>箱愎槽ム┸槽ム<E6A7BD><EFBE91>隼ヘナア・ム莫、<E88EAB>)鎖ケヘミ■<EFBFBD><EFBFBD>€<EFBFBD>燕ノ蠱ミケ。<EFBFBD>。M蟷権恆<EFBFBD>5%9}AMM]=I<11>€トタ、<EFBE80>)鎖ケヘミ皈ヘム・ケ怙<EFBFBD>争ケチノ蔽<EFBFBD>箱扨1
P▼吹I=4≦揃・ケフ!I<14>ヘ碧ケ<E7A2A7><EFBFBD><E6A5B3>、ケ摯ミ<E691AF>揣揃・ク悧<EFBDB8>)<EFBFBD>。甫・ヘム・ケ悧<EFBFBD>(€€€¢飴チノ蔽<EFBFBD>箱拔AQ≦揃・ケフ`P<><50>ヘンスノ挿。<E68CBF><EFBDA1>€<EFBFBD><C280>]!I<14>ヘ碧ケ<E7A2A7><EFBFBD><E6A5B3>、ケノユク。。<EFBDA1><EFBDA1>€揣揃・ク悧<EFBDB8>)<EFBFBD>奮ヘ煤<EFBFBD>(€€€¢飴チノ蔽<EFBFBD><EFBFBD>%9MIP<49>%9Q<≦揃・ケフ€。ユヘ碧ケ<E7A2A7><EFBFBD><E4BC90>ヘンスノ挿。<E68CBF><EFBDA1>、〆1UL€<4C><C280>€<EFBFBD>悧ケノユク<EFBE95>揣揃・ク慍■<E6858D><E296A0><EFBFBD>)<EFBFBD>)争ケ些スヘ箱、<EFBFBD>(<EFBFBD><EFBFBD>装リスケユアー€<EFBFBD>▼ケ匸€京コ<EFBFBD>B芳c明尤ヒ烹3垳蝿‰<E89DBF>・ケ匸€禦Vテ<56>6サ爺O<E788BA>"w満/<2F>2[停キセ<EFBDB7>3椶7烹;「<>*」娘3<E5A898>"@<40>((激崖Θェ3「セリR)訌‥ocker compose ps 2>/dev/null | grep -q 'Up'; then
echo ""
echo "============================================="
echo -e " \033[0;32m笨<6D> CloudSearch 驛ィ鄂イ螳梧<E89EB3>\033[0m"
echo "============================================="
docker compose ps
echo ""
echo " 邂。逅<EFBDA1>錘蜿ー: ${CORS_ORIGIN}/admin/login"
echo " 逕ィ謌キ蜷<EFBDB7>: admin"
echo "<><E89F87><EFBFBD>: ${ADMIN_PASSWORD}"
else
err "譛榊苅蜷ッ蜉ィ螟ア雍・: docker compose logs"
exit 1
fi