Bella OpenAPI 启动与部署详情
本文档详细介绍了 Bella OpenAPI 的启动和部署流程,包括前提条件、启动服务、环境变量配置、服务管理和系统初始化等内容。
目录
项目概述
Bella OpenAPI是一个综合性的AI开放API平台,提供以下主要组件:
-
项目结构:
api/: 后端API服务,基于Spring Boot框架web/: 前端Web应用,基于React和Next.js
-
技术栈:
- 后端:Java、Spring Boot、MySQL、Redis
- 前端:React、Next.js
- 部署:Docker、Docker Compose,需要 Docker Compose 1.13.0+ 版本
- 网关:Nginx(可选,使用脚本启动时会自动在容器中创建)
前提条件
- 安装 Docker
- 安装 Docker Compose
- 执行目录必须在bella-openapi项目的根目录下
启动服务
启动服务时通常需要配置用户登录,方法见:GitHub OAuth配置攻略
./start.sh [选项] (如果本地不存在镜像,会拉取远端镜像)
注意:
- windows下请使用git bash工具执行命令
- 启动脚本只支持部分配置参数,如果需要配置更多参数,可以修改docker-compose.yml文件或修改应用的配置文件
选项:
-b, --build: 重新构建服务-r, --rebuild: 强制重新构建服务(不使用缓存)-e, --env ENV: 指定环境(dev, test, prod)-h, --help: 显示帮助信息--skip-auth: 跳过授权步骤--server URL: 配置服务域名--github-oauth CLIENT_ID:CLIENT_SECRET: 配置GitHub OAuth登录--google-oauth CLIENT_ID:CLIENT_SECRET: 配置Google OAuth登录--cas-server URL: 配置CAS服务器URL--cas-login URL: 配置CAS登录URL--proxy-host HOST: 配置代理服务器主机名或IP地址--proxy-port PORT: 配置代理服务器端口--proxy-type TYPE: 配置代理类型(socks 或 http)--proxy-domains DOMAINS: 配置需要通过代理访问的域名,多个域名用逗号分隔--version VERSION: 指定镜像版本--push: 构建后推送镜像到仓库--registry username: 指定docker仓库 (username)--restart-web: 仅重启前端服务--restart-api: 仅重启后端服务--nginx-port PORT: 指定Nginx服务映射到的端口,默认为80--update-image: 从远程仓库更新镜像,即使本地已存在--service CONTAINER_NAME:DOMAIN:PORT: 配置额外服务的Nginx转发,格式为服务名:域名:端口,多个服务用逗号分隔,只支持同一docker网络下的服务,使用CONTAINER_NAME转发
示例:
./start.sh # 启动服务,不重新构建,如果本地不存在镜像,会拉取远端镜像
./start.sh -b # 启动服务并重新构建(会使用缓存,增量修改编译较快)
./start.sh -r # 启动服务并强制重新构建(不使用缓存)
./start.sh -e test # 以测试环境启动服务
./start.sh --skip-auth # 启动服务但跳过授权步骤
./start.sh --server http://example.com #配置服务域名
./start.sh --proxy-host 127.0.0.1 --proxy-port 8118 --proxy-type http --proxy-domains github.com,google.com # 配置HTTP代理
./start.sh --proxy-host proxy.com --proxy-port 80 --proxy-type socks # 配置SOCKS代理,不指定特定域名
# 没有修改源码,只想拉取远端镜像,并配置登录方式和服务域名,通常使用以下命令即可:
#不配置域名,通常用于本地部署:
./start.sh --github-oauth ${clientId}:${secret} --google-oauth ${clientId}:${secret} #配置github和google的oauth登录
#配置域名,通常用于服务端部署:
./start.sh --github-oauth ${clientId}:${secret} --google-oauth ${clientId}:${secret} --server http://example.com #配置github和google的oauth登录以及服务域名
#配置域名和代理,用于需要通过代理访问外部服务的环境:
./start.sh --github-oauth ${clientId}:${secret} --google-oauth ${clientId}:${secret} --server http://example.com --proxy-host 127.0.0.1 --proxy-port 8118 --proxy-type http --proxy-domains github.com,google.com
./start.sh --cas-server https://cas.example.com --cas-login https://cas.example.com/login --server http://example.com #配置CAS登录和服务域名,如果既配置cas登录又配置oauth登录,登录时会使用cas登录
docker-compose环境变量配置
环境变量优先级
在Docker环境中,环境变量的优先级从高到低为:
- docker-compose.yml中的environment设置
- Dockerfile中的ENV指令
- .env文件、 yaml文件
web构建时环境变量
构建时环境变量通过docker-compose.yml的args部分传递给Dockerfile:
build:
context: ./web
args:
- NODE_ENV=development
- DEPLOY_ENV=development
- SKIP_INSTALL=false
这些变量会影响应用的构建过程,例如Next.js会根据NODE_ENV的值加载不同的环境配置文件(.env.development, .env.production等) 。
web运行时环境变量
运行时环境变量通过docker-compose.yml的environment部分设置:
environment:
- NODE_ENV=development
- DEPLOY_ENV=development
这些变量会在容器运行时生效,但对于已经构建好的静态文件,只有以NEXT_PUBLIC_开头的环境变量才能在客户端访问。
停止服务
./stop.sh
或者直接使用Docker Compose命令:
docker-compose down
查看日志
# 查看所有服务的日志
docker-compose logs
# 查看特定服务的日志
docker-compose logs api # 后端API服务
docker-compose logs web # 前端Web应用
docker-compose logs mysql
docker-compose logs redis
# 实时查看日志
docker-compose logs -f