Skip to content
This repository has been archived by the owner on Dec 30, 2022. It is now read-only.

云端服务

Scarqin edited this page Dec 30, 2022 · 1 revision

云端服务

我们可以通过配置云端服务将数据储存在云端,实现协作和共享数据。

服务部署

环境

服务依赖 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 访问服务。 image

离线部署

需要先在有网的环境生成镜像,并导入内网Docker环境。

在仓库根目录下执行以下步骤:

拉取镜像

docker-compose up -d

执行查看镜像是否拉取成功。

docker images

如图所示,镜像打包成功。 image

导出镜像

导出制作好的镜像为本地文件。

# 语法格式: 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 编排服务解析

Docker 一键部署后,会运行以下四个服务:

  • eoapi:前端服务
  • eoapi-remote-server:后端服务
  • eoapi-test-server:Web 测试服务,因为 Web 跨域问题无法直接发起测试,所以需要部署服务转发 API 测试
  • mysql:数据库服务

部署时可以根据自己的需求修改 docker-compose 文件组合服务。

我如何在外部连接 Docker 里面的数据库?

Docker 里面的数据库开放了相应端口,.env 文件里面有默认配置,在数据库工具中填写[地址/端口/用户名/密码]直接连接即可

MYSQL_PORT=33066
MYSQL_USERNAME=root
MYSQL_DATABASE=eoapi
MYSQL_PASSWORD=123456a.

Docker TLS handshake timeout

ERROR: Head "https://registry-1.docker.io/v2/library/mysql/manifests/latest": net/http: TLS handshake timeout

国外镜像的原因,可以打开代理或者国内镜像安装

MacOS 系统 Docker is not shared from the host and is not known to Docker

image 配置 Docker 文件分享路径后,重启命令行再次执行命令即可解决 image

服务启动成功,但接口报错

如果遇到服务启动成功,但接口 500、无法访问。

大概率是 Docker 容器内访问 MySQL 问题,可能原因: