| 组件 | 版本 |
|---|---|
| .NET SDK | 8.0+ |
| Node.js | 18+ / 20+ |
| 数据库(可选) | SQLite(默认)/ MySQL 8.0+ / PostgreSQL 15+ / SQLServer 2019+ |
docker run -d \
--name juggle \
-p 9127:9127 \
-v juggle_data:/data \
pythonhuang/juggle-net8:v1.0version: '3.8'
services:
juggle:
image: pythonhuang/juggle-net8:v1.0
container_name: juggle
ports:
- "9127:9127"
volumes:
- juggle_data:/data
environment:
- DB_TYPE=sqlite
- DB_PATH=/data/juggle.db
restart: unless-stopped
volumes:
juggle_data:docker-compose up -d- 地址:
http://localhost:9127 - 默认账号:
juggle/juggle
启动Juggle.bat交互式菜单,支持:
- 启动后端 (Juggle.Api)
- 启动前端 (Vue Dev Server)
- 同时启动前后端
- 构建前端并启动后端(生产模式)
cd Juggle.Api
dotnet run
# 默认监听 http://localhost:9127cd JuggleNet6.Frontend
npm install
npm run dev
# 开发模式 http://localhost:5173# 构建前端 → 输出到 Juggle.Api/wwwroot/
cd JuggleNet6.Frontend
npm run build
# 后端自动 serve 前端静态文件
cd ../Juggle.Api
dotnet run
# 访问 http://localhost:9127 即可# 安装 .NET 8 SDK
# Ubuntu:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-sdk-8.0
# 构建运行
cd Juggle.Api
dotnet publish -c Release -o /opt/juggle
cd /opt/juggle
ASPNETCORE_URLS="http://+:9127" dotnet Juggle.Api.dll# /etc/systemd/system/juggle.service
[Unit]
Description=Juggle API Orchestration Platform
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/juggle
ExecStart=/usr/bin/dotnet /opt/juggle/Juggle.Api.dll
Environment=ASPNETCORE_URLS=http://+:9127
Environment=DB_TYPE=sqlite
Environment=DB_PATH=/data/juggle/juggle.db
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable juggle
sudo systemctl start juggleDB_TYPE=sqlite
DB_PATH=/data/juggle.dbDB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_NAME=juggle
DB_USER=root
DB_PASS=your_password或使用完整连接字符串:
DB_CONNECTION_STRING="Server=localhost;Port=3306;Database=juggle;User=root;Password=your_password;"DB_TYPE=postgresql
DB_HOST=localhost
DB_PORT=5432
DB_NAME=juggle
DB_USER=postgres
DB_PASS=your_passwordDB_TYPE=sqlserver
DB_CONNECTION_STRING="Server=localhost;Database=juggle;User Id=sa;Password=your_password;TrustServerCertificate=true;"| 变量 | 说明 | 默认值 |
|---|---|---|
DB_TYPE |
数据库类型:sqlite / mysql / postgresql / sqlserver | sqlite |
DB_PATH |
SQLite 文件路径 | juggle.db |
DB_HOST |
数据库主机 | — |
DB_PORT |
数据库端口 | — |
DB_NAME |
数据库名 | — |
DB_USER |
数据库用户 | — |
DB_PASS |
数据库密码 | — |
DB_CONNECTION_STRING |
完整连接字符串(覆盖上述参数) | — |
Jwt__Key |
JWT 签名密钥 | 内置默认值 |
ASPNETCORE_URLS |
监听地址 | http://+:9127 |
# 至少32字符
Jwt__Key="your-super-secret-key-at-least-32-characters-long!"server {
listen 80;
server_name juggle.example.com;
location / {
proxy_pass http://127.0.0.1:9127;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 50m;
}
}curl http://localhost:9127/api/health
# 返回: {"code":200,"message":"ok"}Docker 健康检查自动使用此端点。
docker pull pythonhuang/juggle-net8:v1.0
docker stop juggle
docker rm juggle
docker run -d --name juggle -p 9127:9127 -v juggle_data:/data pythonhuang/juggle-net8:v1.0# 1. 停止服务
sudo systemctl stop juggle
# 2. 备份数据库
cp /data/juggle.db /data/juggle.db.bak.$(date +%Y%m%d)
# 3. 替换文件
cd JuggleNet6.Frontend && npm run build
cd ../Juggle.Api && dotnet publish -c Release -o /opt/juggle
# 4. 启动服务
sudo systemctl start juggle# 查看端口占用
netstat -ano | findstr 9127 # Windows
lsof -i :9127 # Linux
# 修改监听端口
ASPNETCORE_URLS="http://+:8080"- 检查
DB_TYPE是否正确 - 检查数据库服务是否运行
- SQLite 默认自动创建,确保目录可写
- 开发模式:检查 Vite 代理配置(
vite.config.ts) - 生产模式:前端已构建到
wwwroot/,后端直接 serve
# systemd
journalctl -u juggle -f
# Docker
docker logs -f juggle