Skip to content

Commit 77e2433

Browse files
committed
feat(scripts): add China mirror docker registry
1 parent 2cfb8ad commit 77e2433

3 files changed

Lines changed: 137 additions & 13 deletions

File tree

docker-compose.cn.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
services:
2+
database:
3+
image: "m.daocloud.io/docker.io/library/postgres:latest"
4+
environment:
5+
- "POSTGRES_USER=nexusgate"
6+
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-change_me_in_production}"
7+
- "POSTGRES_DB=nexusgate"
8+
volumes:
9+
- "./db:/var/lib/postgresql/data"
10+
restart: on-failure
11+
healthcheck:
12+
test: ["CMD-SHELL", "pg_isready -U nexusgate -d nexusgate -h localhost"]
13+
interval: 5s
14+
timeout: 5s
15+
retries: 5
16+
start_period: 10s
17+
18+
redis:
19+
image: "m.daocloud.io/docker.io/library/redis:latest"
20+
restart: on-failure
21+
22+
backend:
23+
image: "docker.cnb.cool/em-geeklab/nexus-gate-server:latest"
24+
environment:
25+
- "DATABASE_URL=postgres://nexusgate:${POSTGRES_PASSWORD:-change_me_in_production}@database:5432/nexusgate"
26+
- "ADMIN_SUPER_SECRET=${ADMIN_SUPER_SECRET:-admin_key_change_in_production}"
27+
- "REDIS_URL=redis://redis:6379"
28+
restart: on-failure
29+
depends_on:
30+
database:
31+
condition: service_healthy
32+
redis:
33+
condition: service_started
34+
35+
frontend:
36+
image: "docker.cnb.cool/em-geeklab/nexus-gate-web:latest"
37+
environment:
38+
- "BACKEND_URL=http://backend:3000"
39+
restart: on-failure
40+
depends_on:
41+
- backend
42+
ports:
43+
- "${WEB_PORT:-8080}:80"
44+

scripts/quick-start.bat

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,34 @@ echo 🚀 NexusGate 一键部署脚本
1212
echo ==================================
1313
echo.
1414

15+
REM 选择下载源
16+
:select_download_source
17+
echo 🌐 请选择下载源
18+
echo ==================================
19+
echo 1^) GitHub 官方源 ^(推荐海外用户^)
20+
echo 2^) 国内镜像源 ^(推荐国内用户,更快更稳定^)
21+
echo ==================================
22+
23+
:input_source_choice
24+
set /p "source_choice=请选择 (1/2): "
25+
26+
if "%source_choice%"=="1" (
27+
set DOWNLOAD_SOURCE=github
28+
set COMPOSE_URL=https://raw.githubusercontent.com/EM-GeekLab/NexusGate/main/docker-compose.yaml
29+
echo ✅ 已选择 GitHub 官方源
30+
goto :check_docker
31+
) else if "%source_choice%"=="2" (
32+
set DOWNLOAD_SOURCE=china
33+
set COMPOSE_URL=https://cnb.cool/EM-GeekLab/NexusGate/-/git/raw/main/docker-compose.cn.yaml
34+
echo ✅ 已选择国内镜像源
35+
goto :check_docker
36+
) else (
37+
echo ❌ 请输入有效选项 ^(1 或 2^)
38+
goto :input_source_choice
39+
)
40+
41+
echo.
42+
1543
REM 检查 Docker 是否安装
1644
:check_docker
1745
echo 📋 检查 Docker 环境...
@@ -43,17 +71,22 @@ REM 下载配置文件
4371
:download_configs
4472
echo 📥 下载配置文件...
4573

46-
if exist "docker-compose.yaml" (
47-
echo ⚠️ docker-compose.yaml 已存在,跳过下载
74+
set "compose_file=docker-compose.yaml"
75+
if "%DOWNLOAD_SOURCE%"=="china" (
76+
set "compose_file=docker-compose.cn.yaml"
77+
)
78+
79+
if exist "%compose_file%" (
80+
echo ⚠️ %compose_file% 已存在,跳过下载
4881
) else (
49-
echo 正在下载 docker-compose.yaml...
50-
powershell -Command "try { Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/EM-GeekLab/NexusGate/main/docker-compose.yaml' -OutFile 'docker-compose.yaml' -ErrorAction Stop } catch { Write-Host 'Error: ' + $_.Exception.Message; exit 1 }"
82+
echo 正在下载 %compose_file%...
83+
powershell -Command "try { Invoke-WebRequest -Uri '%COMPOSE_URL%' -OutFile '%compose_file%' -ErrorAction Stop } catch { Write-Host 'Error: ' + $_.Exception.Message; exit 1 }"
5184
if errorlevel 1 (
5285
echo ❌ 下载配置文件失败,请检查网络连接
5386
pause
5487
exit /b 1
5588
)
56-
echodocker-compose.yaml 下载完成
89+
echo%compose_file% 下载完成
5790
)
5891
echo.
5992

@@ -239,14 +272,19 @@ REM 启动服务
239272
:start_services
240273
echo 🚀 启动 NexusGate 服务...
241274

275+
set "compose_file=docker-compose.yaml"
276+
if "%DOWNLOAD_SOURCE%"=="china" (
277+
set "compose_file=docker-compose.cn.yaml"
278+
)
279+
242280
REM 检查是否使用新版 docker compose 命令
243281
docker compose version >nul 2>&1
244282
if errorlevel 1 (
245283
echo 使用 docker-compose 启动服务...
246-
docker-compose up -d
284+
docker-compose -f "%compose_file%" up -d
247285
) else (
248286
echo 使用 docker compose 启动服务...
249-
docker compose up -d
287+
docker compose -f "%compose_file%" up -d
250288
)
251289

252290
if errorlevel 1 (

scripts/quick-start.sh

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,37 @@ NC='\033[0m' # No Color
1515
echo -e "${BLUE}🚀 NexusGate 一键部署脚本${NC}"
1616
echo "===================================="
1717

18+
# 选择下载源
19+
select_download_source() {
20+
echo -e "${BLUE}🌐 请选择下载源${NC}"
21+
echo "===================================="
22+
echo "1) GitHub 官方源 (推荐海外用户)"
23+
echo "2) 国内镜像源 (推荐国内用户,更快更稳定)"
24+
echo "===================================="
25+
26+
while true; do
27+
read -p "请选择 (1/2): " choice
28+
case $choice in
29+
1)
30+
DOWNLOAD_SOURCE="github"
31+
COMPOSE_URL="https://raw.githubusercontent.com/EM-GeekLab/NexusGate/main/docker-compose.yaml"
32+
echo -e "${GREEN}✅ 已选择 GitHub 官方源${NC}"
33+
break
34+
;;
35+
2)
36+
DOWNLOAD_SOURCE="china"
37+
COMPOSE_URL="https://cnb.cool/EM-GeekLab/NexusGate/-/git/raw/main/docker-compose.cn.yaml"
38+
echo -e "${GREEN}✅ 已选择国内镜像源${NC}"
39+
break
40+
;;
41+
*)
42+
echo -e "${RED}❌ 请输入有效选项 (1 或 2)${NC}"
43+
;;
44+
esac
45+
done
46+
echo ""
47+
}
48+
1849
# 检查 Docker 是否安装和权限
1950
check_docker() {
2051
if ! command -v docker &> /dev/null; then
@@ -52,11 +83,16 @@ generate_password() {
5283
download_configs() {
5384
echo -e "${BLUE}📥 下载配置文件...${NC}"
5485

55-
if [ ! -f "docker-compose.yaml" ]; then
56-
curl -fsSL https://raw.githubusercontent.com/EM-GeekLab/NexusGate/main/docker-compose.yaml -o docker-compose.yaml
57-
echo -e "${GREEN}✅ docker-compose.yaml 下载完成${NC}"
86+
local compose_file="docker-compose.yaml"
87+
if [ "$DOWNLOAD_SOURCE" = "china" ]; then
88+
compose_file="docker-compose.cn.yaml"
89+
fi
90+
91+
if [ ! -f "$compose_file" ]; then
92+
curl -fsSL "$COMPOSE_URL" -o "$compose_file"
93+
echo -e "${GREEN}$compose_file 下载完成${NC}"
5894
else
59-
echo -e "${YELLOW}⚠️ docker-compose.yaml 已存在,跳过下载${NC}"
95+
echo -e "${YELLOW}⚠️ $compose_file 已存在,跳过下载${NC}"
6096
fi
6197
}
6298

@@ -203,11 +239,16 @@ EOF
203239
start_services() {
204240
echo -e "${BLUE}🚀 启动 NexusGate 服务...${NC}"
205241

242+
local compose_file="docker-compose.yaml"
243+
if [ "$DOWNLOAD_SOURCE" = "china" ]; then
244+
compose_file="docker-compose.cn.yaml"
245+
fi
246+
206247
# 检查是否使用新版 docker compose 命令
207248
if docker compose version &> /dev/null; then
208-
docker compose up -d
249+
docker compose -f "$compose_file" up -d
209250
else
210-
docker-compose up -d
251+
docker-compose -f "$compose_file" up -d
211252
fi
212253

213254
echo -e "${GREEN}✅ 服务启动完成!${NC}"
@@ -242,6 +283,7 @@ show_access_info() {
242283

243284
# 主函数
244285
main() {
286+
select_download_source
245287
check_docker
246288
download_configs
247289
create_env_file

0 commit comments

Comments
 (0)