-
Notifications
You must be signed in to change notification settings - Fork 22
云端服务
我们可以通过配置云端服务将数据储存在云端,实现协作和共享数据。
服务依赖 Node.js,为了避免乱七八糟的环境问题,我们通过 Docker 安装部署应用。 所以在开始部署前,请准备好以下环境:
在命令行运行以下命令拉取仓库代码
git clone https://github.com/eolinker/eoapi-remote-server
cd eoapi-remote-server
如果你不需要修改 MySQL 数据库配置,可以跳过此步骤,服务会将数据储存到容器内 MySQL。
在根目录下 .env
文件中统一配置 MySQL 连接、端口等配置信息。
如果配置容器外的 MYSQL 数据库,版本需要大于等于 5.8.7,推荐 8.x。
# Eoapi 服务配置
EOAPI_SERVER_PORT=3000
EOAPI_SERVER_PATH=/api
# MySQL 配置
TZ=Asia/Shanghai
# MySQL 的主机地址,默认使用容器内部的 MySQL
# 如果连接的是其他 MySQL 服务器,填写实际地址
# 例如 MYSQL_HOST=host.docker.internal(当前宿主机地址)
MYSQL_HOST=mysql
# MySQL 端口号
MYSQL_PORT=3306
MYSQL_USERNAME=root
MYSQL_DATABASE=eoapi
MYSQL_PASSWORD=123456a.
MYSQL_ROOT_PASSWORD=123456a.
如果你的服务器可以联网,可以通过在线部署一键启动;
如果无法联网,请使用离线部署。
需要先在相应数据库创建数据库 eoapi(和
.evn
配置文件写的数据库名称保持一致)
在项目代码根目录下,运行下面命令。
docker-compose up -d
如图代表启动成功,可通过 http://<server_url>:3002
访问服务。
需要先在有网的环境生成镜像,并导入内网
Docker
环境。
在仓库根目录下执行以下步骤:
docker-compose up -d
执行查看镜像是否拉取成功。
docker images
如图所示,镜像打包成功。
导出制作好的镜像为本地文件。
# 语法格式: docker save {目标镜像} -o /{导出位置}/{导出镜像的名称}.tar
docker save eolinker/eoapi-remote-server -o ./eoapi-remote-server.tar
docker save eolinker/eoapi-test-server -o ./eoapi-test-server.tar
docker save eolinker/eoapi -o ./eoapi.tar
docker save mysql -o ./mysql
在离线环境中导入镜像镜像文件。
docker load < ./eoapi-remote-server.tar
docker load < ./eoapi-test-server.tar
docker load < ./eoapi.tar
docker load < mysql -o ./mysql
剩余步骤和在线部署一致。
部署完云端服务即可使用协作功能啦,将你部署好的服务器地址(一般是服务器 IP+3002 端口)分享给你的小伙伴吧!
客户端使用文档请看:团队协作。
如果无法部署成功,请通过查看 Docker logs 日志排查问题。
:::warning 升级前备份数据库是个好习惯 👍。 :::
停止正在运行的 Docker 服务,删除旧的 docker 镜像。
拉取 eoapi-remote-server 仓库 main
分支最新的代码。
执行下面命令即可升级成功~
docker-compose down
docker image rm $(docker images | grep "eoapi" )
docker-compose up -d
:::info 容器每次启动前都会执行一次数据库迁移脚本,数据库有变动的话,会自动升级数据库。
Eoapi 数据是通过 Docker Volumnes 持久化到本地,无需担心升级/删除镜像会删除数据。 :::
需要查看运行日志,可以运行下面命令
docker-compose logs -f
:::info 遇到问题请先查看日志~,如果仍然无法解决,可以联系我们。 :::
Docker 一键部署后,会运行以下四个服务:
- eoapi:前端服务
- eoapi-remote-server:后端服务
- eoapi-test-server:Web 测试服务,因为 Web 跨域问题无法直接发起测试,所以需要部署服务转发 API 测试
- mysql:数据库服务
部署时可以根据自己的需求修改 docker-compose 文件组合服务。
Docker 里面的数据库开放了相应端口,.env 文件里面有默认配置,在数据库工具中填写[地址/端口/用户名/密码]直接连接即可
MYSQL_PORT=33066
MYSQL_USERNAME=root
MYSQL_DATABASE=eoapi
MYSQL_PASSWORD=123456a.
ERROR: Head "https://registry-1.docker.io/v2/library/mysql/manifests/latest": net/http: TLS handshake timeout
国外镜像的原因,可以打开代理或者国内镜像安装
配置 Docker 文件分享路径后,重启命令行再次执行命令即可解决
如果遇到服务启动成功,但接口 500、无法访问。
大概率是 Docker 容器内访问 MySQL 问题,可能原因:
- MySQL 端口被安全组防火墙拦截
- Docker 版本兼容:https://www.cnblogs.com/forlive/p/15989409.html
- Docker 升级没有重启