使用Docker快速部署GoEdge 搭建自己专属的CDN服务

GoEdge 是一款用于管理分布式 CDN 边缘节点的开源工具软件，目的是让用户轻松地、低成本地创建 CDN/WAF 等应用。在圈内名气挺大的，支持 x86、arm64 两个平台，对系统的依赖性也不高，是用户除购买商业 CDN 服务之外，自建 CDN 的不错选择。

GoEdge 分为免费的社区版和需要付费的商业版，商业版比社区版多了一些功能，比如边缘计算、HTTP/3、更详细的可访问性监控、5 秒盾等，详细的差别可访问这里了解：GoEdge CDN 专业版，但实话实说，社区版已经足够强大了。

GoEdge 的安装，可以参考官方的教程，这里不做搬运和赘述，这里介绍另外一种方法，使用 Docker 快速部署 GoEdge 管理平台（包含 API 节点）和边缘节点。让我们开始吧！

部署前的准备工作

安装 Docker

管理平台和边缘节点都需要先安装 Docker，新版本的 Docker 已包含 compose 插件，因此我们只需要执行官方推荐的命令安装即可：

Copy
curl -sSL https://get.docker.com | sh

部署管理平台

首先编写 docker-compose.yaml，因为将管理平台所依赖的 mysql 加进来，所以这里使用 docker compose 的方式进行，也是方便后期迁移等管理工作。

mysql 的版本要求，官方建议使用 mysql 8，最低不低于 mysql 5.7.8，系统内存建议 4GB 以上。

首先进入你想存放 docker-compose.yaml 的路径，比如 /opt/goedge，然后进入该路径后创建 docker-compose.yaml，输入以下内容：

Copy
version: "3"

networks:
goedge:
external: false

services:
mysqld:
image: mysql:8
container_name: mysqld
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=edges
- MYSQL_PASSWORD=edges
- MYSQL_DATABASE=edges
networks:
- goedge
volumes:
- ./data/db/mysql:/var/lib/mysql:rw
restart: always

edge-admin:
image: icodex/edge-admin:1.3.3
container_name: edge-admin
ports:
- 7788:7788/tcp
- 8001:8001/tcp
networks:
- goedge
volumes:
- ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs
- ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configs
restart: always

以上使用了 mysql 8 的镜像，接着 edge-admin 是管理平台的镜像。确定没有端口冲突之后，执行命令启动：

Copy
docker compose up -d

运行后，打开浏览器，输入服务器 IP 地址和 7788 端口号，进入安装界面：

注意⚠️！因为这里的网络类型是容器内共享的，因此在数据库信息填写这里，数据库的地址只需要填写 mysql 的容器名即可，比如这里的：mysqld。数据库名、数据库账号、数据库密码均为 edges。一直下一步就好了。

ps：如果你现在的宿主机系统里面已经有 mysql，不想再多运行一个浪费资源，则需要考虑删掉 docker-compose.yaml 里的 mysql 服务，并将网络类型更改为 Host 网络类型，以方便与宿主机上的 mysql 通信，如下：

Copy
version: "3"

services:
edge-admin:
image: icodex/edge-admin:1.3.3
container_name: edge-admin
network_mode: host
volumes:
- ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs
- ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configs
restart: always

docker-compose.yaml 编辑好之后，确定端口没有冲突，就可以执行以下命令启动整个系统了！

部署边缘节点

在上面的部署中，已经完成了管理平台的部署，这时可以按照官方教程添加边缘节点的方式进行添加。也可以按以下步骤，部署一个 Docker 容器形态的边缘节点。

这里使用 GoEdge 的自动注册功能，因此需要先在 GoEdge 管理界面 – 边缘节点 – 找到你所在集群 – 集群节点 – 安装升级 – 自动注册，把 endpoints、clusterId、secret 三个值记录下来。

然后准备一个 docker-compose.yaml，输入以下内容，注意替换环境变量里相应的值

Copy
version: "3"

services:
edge-node:
image: icodex/edge-node:1.3.3
container_name: edge-node
environment:
- ENDPOINTS=http://xxx.com:8001
- CLUSTERID=xxx
- SECRET=xxx
network_mode: host
cap_add:
- NET_ADMIN
volumes:
- ./data/edge-node/cache:/opt/cache
- ./data/edge-node/configs:/usr/local/goedge/edge-node/configs
restart: always

接着使用 docker compose 命令启动它，很快就可以在管理平台看到这台上线的主机了。

以上，是完整部署 GoEdge 的全部步骤，非常简单吧！

最后

这个项目应该不算造轮子，只是我个人习惯使用 docker 进行服务的管理，docker 运行毕竟套了多一层虚拟化，因此在边缘节点的容器的网络选择上，建议使用 host 类型，与宿主机共享会比较好。

最后，docker 镜像制作所需文件我放在 github 上，可以点击这里访问：https://github.com/icodex/docker-goedge