Goku Gateway 3.1.x Docker Compose 部署指南
用 Docker Compose 一键拉起 Goku Gateway CE 两件套:管理控制台 3.1.4 + 网关节点 3.1.5 + 演示后端,覆盖镜像选型与版本搭配取证、专用网络与固定 IP、compose 全量配置逐项说明、数据持久化、环境变量表、等价 docker run、运维命令与四类排障实录(节点注册 bind 失败、镜像三层版本号、首启密码双重 MD5、外置网络缺失),全链路 curl 实测取证。
Goku Gateway 3.1.x Docker Compose 部署指南
目标:用 Docker Compose 一键拉起 Goku Gateway(goku_lite 社区版 CE)的完整两件套——Web 管理控制台(console)与网关数据面节点(node),并附带一个用于转发验证的演示后端,最终完成「管理台可登录、节点已注册、策略已发布、curl 经网关转发 200」的全链路验证。全部命令与回显均在 Ubuntu 22.04 x86_64 实机上执行取证,Docker Compose v5.5.1,管理面 console 3.1.4 + 数据面 node 3.1.5(镜像渠道最新组合),查询/实测日期 2026-10-23 ~ 2026-10-24。
一、环境信息
本章列出本次部署实测所用的软硬件环境与最终拓扑,读者在同等环境可直接复现。
- 操作系统:Ubuntu 22.04(x86_64),内核 5.15+;
- Docker Compose:
Docker Compose version v5.5.1(docker compose version实测); - 管理面(console):
eolinker/goku-api-gateway-ce-console:3.1.4,监听 Web/API 端口 7000,节点注册端口 7005,宿主映射 8131→7000; - 数据面(node):
eolinker/goku-api-gateway-ce-node:3.1.5,网关转发端口 6689,宿主映射 6689→6689; - 演示后端(backend):
nginx:alpine,仅挂内部网络,不映射宿主端口,作为被代理目标; - 专用网络:
goku-net(user-defined bridge,实测网段10.89.61.0/24,网关10.89.61.1); - 固定 IP 规划:console=10.89.61.2,node=10.89.61.3,backend=10.89.61.4;
- 数据落盘目录:
/opt/goku-gateway/console-work(console 数据)、/opt/goku-gateway/node-work(node 数据); - 版本搭配:console 3.1.4 + node 3.1.5(版本搭配取证见 2.3 节)。
二、镜像选型说明
2.1 官方镜像清单
Goku Gateway CE 官方以两个独立镜像发行(来源:Docker Hub 官方仓库,查询日期 2026-10-24):
| 组件 | 镜像 | 角色说明 |
|---|---|---|
| 管理控制台 | eolinker/goku-api-gateway-ce-console | Web 图形化控制台 + 配置管理 + 节点注册服务 |
| 网关节点 | eolinker/goku-api-gateway-ce-node | 无状态数据面,从 console 拉取配置并转发流量 |
| 演示后端(非官方组件) | nginx:alpine | 仅用于验证网关转发链路,生产可替换为任意 HTTP 服务 |
解读:console 与 node 必须搭配使用——node 无独立配置能力(除 config 文件模式),所有路由、策略、负载均衡配置都由 console 管理;backend 是本文为验证转发链路自加的第三方服务,非 Goku 组件。
2.2 镜像渠道版本现状(查询日期 2026-10-24)
Docker Hub 官方镜像渠道的最新版本为:console 3.1.4(2021-01-08 发布,latest 标签同步指向 3.1.4)、node 3.1.5(2021-01-19 发布)。GitHub 源码 Release 渠道停在 3.1.3(2020-01)。两者不同步的详细溯源见 《Goku Gateway 3.1.x 介绍与选型指南》第七章。按镜像部署时取 Docker Hub 最新即可,本文即采用该组合。
2.3 版本搭配取证(镜像内实查)
为确认「镜像 tag 与运行版本」的真实关系,部署完成后在两个官方镜像内逐项实查:
console 3.1.4 镜像内部目录:
docker exec goku-3.1.4-console ls -la /app/goku-ce/console/
实测回显:
total 20
drwxr-xr-x 1 root root 4096 Jan 8 2021 .
drwxr-xr-x 1 root root 4096 Mar 30 2020 ..
drwxr-xr-x 1 root root 4096 Jan 8 2021 config
lrwxrwxrwx 1 root root 14 Jan 8 2021 console -> console-3.1.4/
drwxr-xr-x 5 root root 4096 Jan 8 2021 console-3.1.4
drwxr-xr-x 3 root root 4096 Oct 24 02:49 work
node 3.1.5 镜像内部目录与版本文件:
docker exec goku-3.1.5-node ls -la /app/goku-ce/node/
docker exec goku-3.1.5-node sh -c 'cat /app/goku-ce/node/node-3.1.5/version; echo'
实测回显:
total 20
drwxr-xr-x 1 root root 4096 Oct 23 21:56 .
drwxr-xr-x 1 root root 4096 Jan 18 2020 ..
lrwxrwxrwx 1 root root 11 Jan 18 2021 node -> node-3.1.5/
drwxr-xr-x 3 root root 4096 Jan 19 2021 node-3.1.5
drwxr-xr-x 3 root root 4096 Oct 23 21:56 work
3.1.3
console 侧汇总接口上报的版本(/monitor/gateway/getSummaryInfo,登录后调用):
{"baseInfo":{"nodeCount":1,"nodeStartCount":0,"nodeStopCount":0,"projectCount":1,"apiCount":1,"strategyCount":2,"pluginCount":5,"clusterCount":1,"version":"3.1.4"},"statusCode":"000000","type":"monitor"}
取证结论:console 3.1.4 镜像内运行目录为 console-3.1.4,与 tag 一致;node 3.1.5 镜像内运行目录为 node-3.1.5、但内部 version 版本文件内容是 3.1.3,注册到 console 后节点列表上报 version: 3.1.4。即 node 镜像存在「tag 3.1.5 / version 文件 3.1.3 / 管理台上报 3.1.4」三层版本号,属该项目历史遗留现象,不影响功能,运维盘点时以「镜像 tag + console 汇总接口」为准。
💡 技术拓展:管理面与数据面分离的网关在版本升级时通常遵循「控制面兼容数据面」原则——先升数据面、后升控制面(或控制面保持兼容窗口),因为配置下发方(console)需识别数据面(node)上报的版本号。Goku CE 节点注册时上报 version 字段,console 按集群维度管理节点列表,因此 console/node 小版本错配(3.1.4/3.1.5)可正常运行;但大版本混用不受官方保证。
三、前置条件
- 宿主机已安装 Docker 与 Docker Compose(验证命令见 4.2);
- 宿主机可访问外网镜像仓库(拉取 3 个镜像);
- 端口 8131(console Web)、6689(node 网关)未被占用;
- 规划数据落盘目录
/opt/goku-gateway/(console 数据与 node 数据各一个子目录)。
四、部署步骤
4.1 确认 Docker 环境版本
先确认宿主机 Docker Compose 可用:
docker compose version
实测回显:
Docker Compose version v5.5.1
4.2 创建专用网络
console 与 node 需要通过固定 IP 互相寻址(node 启动参数要写死 console 的地址),因此先创建 user-defined bridge 网络并启用静态 IP:
docker network create -d bridge goku-net --subnet 10.89.61.0/24
实测创建后的网络信息:
docker network inspect goku-net
实测回显(节选):
[
{
"Name": "goku-net",
"Id": "21813096b2f0ee45c773a8dbfa26238d0847e5f10676db471a58b714118add8b",
"Created": "2026-10-23T21:43:38.535539886+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv4": true,
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.89.61.0/24",
"Gateway": "10.89.61.1"
}
]
}
}
]
4.3 准备数据落盘目录
mkdir -p /opt/goku-gateway/console-work /opt/goku-gateway/node-work
说明:console 的 SQLite 数据库与运行日志落在 /app/goku-ce/console/work,node 的日志与启动环境文件落在 /app/goku-ce/node/work,两个目录必须挂载到宿主机做持久化,否则重建后管理配置全部丢失。
4.4 编写 docker-compose.yml
在部署目录(如 /opt/goku-gateway/)创建 docker-compose.yml:
name: goku-gateway-3.1.5-stack
networks:
goku-net:
external: true
services:
console:
image: eolinker/goku-api-gateway-ce-console:3.1.4
container_name: goku-3.1.4-console
restart: unless-stopped
ports:
- "8131:7000"
environment:
- GOKU_ADMIN_PASSWORD=q1w2e3r4
volumes:
- /opt/goku-gateway/console-work:/app/goku-ce/console/work
networks:
goku-net:
ipv4_address: 10.89.61.2
node:
image: eolinker/goku-api-gateway-ce-node:3.1.5
container_name: goku-3.1.5-node
restart: unless-stopped
ports:
- "6689:6689"
environment:
- GOKU_ADMIN_ADDRESS=10.89.61.2:7005
- INSTANCE=dbcf5af2f61546367cae44869e1dc21a
volumes:
- /opt/goku-gateway/node-work:/app/goku-ce/node/work
networks:
goku-net:
ipv4_address: 10.89.61.3
backend:
image: nginx:alpine
container_name: goku-3.1.5-backend
restart: unless-stopped
networks:
goku-net:
ipv4_address: 10.89.61.4
逐项说明:
| 配置项 | 值 | 作用与取值说明 |
|---|---|---|
name | goku-gateway-3.1.5-stack | Compose 项目名,显式声明,避免默认取目录名 |
networks.goku-net.external | true | 复用 4.2 手动创建的网络,三个服务共享同一内网 |
console 端口 8131:7000 | 宿主 8131 | 映射镜像内 Web/API 监听口 7000(listen_port),浏览器经 8131 访问控制台 |
console GOKU_ADMIN_PASSWORD | q1w2e3r4 | 首次启动初始化管理员 admin 的密码(账号默认 admin) |
| console 挂载卷 | console-work:/app/goku-ce/console/work | 持久化 SQLite 库 goku.db 与控制台日志 |
node 端口 6689:6689 | 宿主 6689 | 网关数据面流量入口 |
node GOKU_ADMIN_ADDRESS | 10.89.61.2:7005 | 指向 console 的节点注册端口(admin_bind 0.0.0.0:7005),必须写网络内固定 IP |
node INSTANCE | dbcf5af2f61546367cae44869e1dc21a | 节点实例标识,与 console 节点注册的 nodeKey 对应,取 32 位十六进制串 |
| node 挂载卷 | node-work:/app/goku-ce/node/work | 持久化网关访问日志、系统日志与启动环境文件 |
| backend | 无端口映射 | 仅内部网络可达,被网关代理验证用 |
⚠️ 注意:
INSTANCE建议在 console 侧先「添加节点」生成节点 key 后再填入(见 4.7 第 4 步);先启动 node 只会看到重试日志,console 侧注册成功后配置才会下发。
4.5 启动全套服务
docker compose up -d
实测回显(首次 up,console 已单独启动过故显示 Running):
Container goku-3.1.4-console Running
Container goku-3.1.5-node Creating
Container goku-3.1.5-backend Creating
Container goku-3.1.5-backend Created
Container goku-3.1.5-node Created
Container goku-3.1.5-node Starting
Container goku-3.1.5-backend Starting
Container goku-3.1.5-node Started
Container goku-3.1.5-backend Started
4.6 查看运行状态
docker compose ps
实测回显:
NAME IMAGE COMMAND CREATED STATUS PORTS
goku-3.1.4-console eolinker/goku-api-gateway-ce-console:3.1.4 "sh -c './gateway-co…" 5 hours ago Up 4 hours 7005/tcp, 0.0.0.0:8131->7000/tcp, [::]:8131->7000/tcp
goku-3.1.5-backend nginx:alpine "/docker-entrypoint.…" 5 hours ago Up 5 hours 80/tcp
goku-3.1.5-node eolinker/goku-api-gateway-ce-node:3.1.5 "sh -c './run.sh sta…" 5 hours ago Up 4 hours 0.0.0.0:6689->6689/tcp, [::]:6689->6689/tcp
三服务均 Up,console 暴露 7005(节点注册口,容器内)与 8131→7000(Web 口),node 暴露 6689,backend 仅内网 80。STATUS 列运行 4~5 小时无重启,说明 restart: unless-stopped 生效且进程稳定。
4.7 控制台初始化与节点注册验证
1. 验证控制台 Web 服务健康:
curl -sI http://127.0.0.1:8131/
实测回显:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 2427
Content-Type: text/html; charset=utf-8
Last-Modified: Fri, 08 Jan 2021 07:20:48 GMT
Date: Fri, 23 Oct 2026 18:50:03 GMT
HTTP 200 且返回 2427 字节的控制台首页(页面标题 GoKu Gateway),控制台服务就绪。
2. 验证管理员账号可登录(账号 admin、密码为 compose 里 GOKU_ADMIN_PASSWORD=q1w2e3r4):
curl -s -X POST -d 'loginCall=admin&loginPassword=q1w2e3r4' -c cookies.txt http://127.0.0.1:8131/guest/login
实测回显:
{"statusCode":"000000","type":"guest","userID":2}
登录成功返回 statusCode=000000 与 userID,cookie 已写入本地 cookies.txt 供后续管理 API 使用。管理 Open API 的完整用法见本专栏命令篇《Goku Gateway 3.1.x 管理面与 CLI 命令详解》。
3. 验证网关数据面端口:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:6689/
实测回显:
404
💡 说明:网关端口返回 404 而非连接拒绝,说明 node 进程已在 6689 监听并正常应答——只是尚未下发任何路由规则,故 404。这是数据面健康的正确表现。
4. 在控制台确认节点注册成功:
curl -s -b cookies.txt -X POST -d 'currentPage=1&pageSize=10&cluster=Default' http://127.0.0.1:8131/node/getList
实测回显(节选自实测响应):
{"nodeList":[{"nodeID":1,"nodeName":"node-1","nodeKey":"dbcf5af2f61546367cae44869e1dc21a","listenAddress":"10.89.61.3:6689","adminAddress":"10.89.61.3:7005","cluster":"Default","cluster_title":"Default","version":"3.1.4","nodeStatus":1,"groupName":"未分类","isUpdate":false,"gatewayPath":"","createTime":"2026-10-23 21:54:29","updateTime":"2026-10-23 22:04:43"}],"page":{"itemNum":1,"totalNum":1},"statusCode":"000000","type":"node"}
节点 node-1 已注册到 Default 集群:nodeKey 即 compose 里 INSTANCE 的值,listenAddress 为 node 内网 6689,nodeStatus: 1 表示运行中。console 侧 INSTANCE 与节点 key 的对应关系就是配置下发与热更新的寻址基础。
五、数据持久化说明
5.1 console 侧落盘内容
console 挂载卷 /app/goku-ce/console/work 在宿主机 /opt/goku-gateway/console-work 中的实际内容:
ls -la /opt/goku-gateway/console-work/
实测回显:
total 176
drwxr-xr-x 3 root root 4096 Oct 23 22:33 .
drwxr-xr-x 6 root root 4096 Oct 23 21:56 ..
-rw-r--r-- 1 root root 167936 Oct 23 22:33 goku.db
drwxr-xr-x 2 root root 4096 Oct 23 22:33 logs
goku.db 是 console 的 SQLite 主库(随管理操作从 151552 字节增长到 167936 字节),内含 goku_admin(账号)、goku_gateway_api(API)、goku_gateway_strategy(策略)、goku_balance(负载均衡)、goku_node_info(节点)、goku_gateway_version_config(配置版本)等 26 张表;logs/ 下按小时滚动控制台日志(console 仅记录错误,正常情况下为空文件)。
5.2 node 侧落盘内容
ls -la /opt/goku-gateway/node-work/ /opt/goku-gateway/node-work/logs/
实测回显:
/opt/goku-gateway/node-work/:
total 16
drwxr-xr-x 3 root root 4096 Oct 23 21:56 .
drwxr-xr-x 6 root root 4096 Oct 23 21:56 ..
drwxr-xr-x 2 root root 4096 Oct 24 02:00 logs
-rw-r--r-- 1 root root 36 Oct 23 22:29 node.env
/opt/goku-gateway/node-work/logs/:
total 20
drwxr-xr-x 2 root root 4096 Oct 24 02:00 .
drwxr-xr-x 3 root root 4096 Oct 23 21:56 ..
-rw-r--r-- 1 root root 0 Oct 23 21:56 access-2026-10-23-21.log
-rw-r--r-- 1 root root 3147 Oct 23 22:33 access-2026-10-23-22.log
-rw-r--r-- 1 root root 3242 Oct 23 22:33 node-2026-10-23.log
node.env 记录节点启动环境(实测内容 ENV_PORT=、ENV_ADMIN=10.89.61.2:7005),logs/access-*.log 是网关访问日志(每次转发一行,含策略名、负载均衡名、上游地址、状态码、耗时),logs/node-*.log 是网关系统日志。
5.3 重启后数据保留验证
管理面配置全部落在 goku.db(宿主机目录),node 配置由 console 实时下发、node 本地无状态。docker compose down && docker compose up -d 后再次登录并查询 /project/getList、/strategy/getList,此前创建的 demo-project、demo-strategy 均保留——这正是「console 配置落库持久化 + node 无状态」架构的行为验证。
六、环境变量表
两个官方镜像的环境变量与默认值(经 docker inspect 实测采集):
| 镜像 | 变量 | 本文取值 | 说明与默认行为 |
|---|---|---|---|
| console | GOKU_ADMIN | 未设置(默认 admin) | 初始化管理员的登录名 |
| console | GOKU_ADMIN_PASSWORD | q1w2e3r4 | 初始化管理员密码;仅在账号表为空的首启生效 |
| console | CONSOLE_DIR | console-3.1.3(镜像内置默认) | 镜像构建期遗留变量,实际运行目录为 console-3.1.4(见 2.3 取证),无需改动 |
| node | GOKU_ADMIN_ADDRESS | 10.89.61.2:7005 | console 的节点注册地址(IP:Port),决定 node 向哪里注册并拉取配置 |
| node | INSTANCE | dbcf5af2f61546367cae44869e1dc21a | 节点实例标识,须与 console 节点 key 一致 |
| node | NODE_PORT | 6689(镜像内置默认) | 网关数据面监听端口 |
| node | NODE_DIR | node-3.1.3(镜像内置默认) | 镜像构建期遗留变量,实际运行目录为 node-3.1.5,无需改动 |
镜像内置启动命令实测(docker inspect 的 Cmd 字段):
console → sh -c ./gateway-console -c config/goku.conf -u ${GOKU_ADMIN} -p ${GOKU_ADMIN_PASSWORD}
node → sh -c ./run.sh start ${GOKU_ADMIN_ADDRESS} ${INSTANCE}
可见 console 以 gateway-console -c 配置文件 -u 账号 -p 密码 启动,node 以官方 run.sh start <admin地址> <实例ID> 启动——两个镜像都不建议覆写启动命令,改环境变量即可。
七、配置参数说明
7.1 console 的 goku.conf
console 配置文件位于镜像内 /app/goku-ce/console/config/goku.conf,实测内容:
listen_port: 7000
admin_bind: 0.0.0.0:7005
| 参数 | 默认值 | 说明 |
|---|---|---|
listen_port | 7000 | Web 控制台 + 管理 Open API 监听端口(本部署映射为宿主 8131) |
admin_bind | 0.0.0.0:7005 | 节点注册/配置分发监听地址,GOKU_ADMIN_ADDRESS 的对端 |
db_type | sqlite3 | 数据库类型,支持 sqlite3 / mysql(未写入时走默认 sqlite3,实测即如此) |
db_path | ./work/goku.db | sqlite3 模式下的库文件路径(相对 console 工作目录) |
db_host / db_port / db_user / db_password / db_name | —(mysql 模式必填) | mysql 模式的连接参数 |
如需把管理数据外置到 MySQL,在挂载的 goku.conf 中追加 db_type: mysql 与五个连接键后重启 console 即可;config/cluster.yaml 是多机房(cluster)初始化模板,CE 单机房场景无需修改。参数级配置的逐项详解见 《Goku Gateway 3.1.x 配置参数详解》。
7.2 node 的启动参数
node 进程参数(./node --help 实测):
Usage of ./node:
-admin string
Please provide a valid host!
-config string
Please provide a config file
-debug
-instance string
Please provide a valid instance!
官方 run.sh start <admin地址> <实例ID> 会把两个位置参数转成 --admin 与 --instance;当 work 目录存在 goku-node.json 时改走 --config 文件模式(离线模式)。三种运行方式的完整对照见 《Goku Gateway 3.1.x 管理面与 CLI 命令详解》。
八、配置文件挂载
本部署共挂载两个宿主目录、零个单文件:
| 宿主路径 | 容器路径 | 用途 |
|---|---|---|
/opt/goku-gateway/console-work | /app/goku-ce/console/work | console:SQLite 库 + 日志(必挂,否则配置随容器重建丢失) |
/opt/goku-gateway/node-work | /app/goku-ce/node/work | node:访问/系统日志 + node.env + (可选)goku-node.json |
如需自定义 goku.conf,把整个 config/ 目录也挂进 console(-v /opt/goku-gateway/console-config:/app/goku-ce/console/config),先在宿主放好 goku.conf 再首启,避免镜像内默认文件覆盖。
九、等价 docker run 命令
不使用 Compose 时,以下三条命令与本 compose 文件完全等价(网络与目录准备同 4.2/4.3):
docker run -d --name goku-3.1.4-console --restart unless-stopped \
--network goku-net --ip 10.89.61.2 \
-p 8131:7000 \
-e GOKU_ADMIN_PASSWORD=q1w2e3r4 \
-v /opt/goku-gateway/console-work:/app/goku-ce/console/work \
eolinker/goku-api-gateway-ce-console:3.1.4
docker run -d --name goku-3.1.5-backend --restart unless-stopped \
--network goku-net --ip 10.89.61.4 \
nginx:alpine
docker run -d --name goku-3.1.5-node --restart unless-stopped \
--network goku-net --ip 10.89.61.3 \
-p 6689:6689 \
-e GOKU_ADMIN_ADDRESS=10.89.61.2:7005 \
-e INSTANCE=dbcf5af2f61546367cae44869e1dc21a \
-v /opt/goku-gateway/node-work:/app/goku-ce/node/work \
eolinker/goku-api-gateway-ce-node:3.1.5
说明:等价形态必须手动建网络、逐个指定 --ip;compose 文件把这组编排固化,推荐生产使用 compose。注意启动顺序无强制要求,node 会自动向 GOKU_ADMIN_ADDRESS 重试注册。
十、常用运维命令
| 操作 | 命令 |
|---|---|
| 查看状态 | docker compose ps |
| 查看日志(跟随) | docker compose logs -f console / docker compose logs -f node |
| 停止全套 | docker compose stop |
| 启动全套 | docker compose start |
| 重启单服务 | docker compose restart node |
| 销毁(保留数据) | docker compose down |
| 销毁并删网络 | docker compose down 后 docker network rm goku-net |
docker compose down 不删除挂载目录,/opt/goku-gateway/ 下的 goku.db 与日志保留,重新 up 后配置原样恢复。
十一、常见问题(FAQ)
Q1:node 容器日志反复出现 listen tcp 10.89.61.2:7005: bind: cannot assign requested address?
实测现象(node 系统日志逐行):
2026/10/23 21:56:03 listen tcp 10.89.61.2:7005: bind: cannot assign requested address
2026/10/23 21:56:55 listen tcp 10.89.61.2:7005: bind: cannot assign requested address
2026/10/23 21:58:47 listen tcp 10.89.61.2:7005: bind: cannot assign requested address
定位:该地址是 console 的 GOKU_ADMIN_ADDRESS,node 在 GOKU_ADMIN_ADDRESS 指向的地址与本机网卡不符(或 console 尚未在该地址就绪)时会反复尝试并打此日志。解决:确认 compose 里 console 已绑定固定 IP 10.89.61.2 且 node 的 GOKU_ADMIN_ADDRESS=10.89.61.2:7005 与之一致后重建 node;实测修正后 node 在 console 侧注册成功(节点列表 updateTime 更新),并在控制台发布新版配置(版本列表 v2 备注即 fix adminAddress)后路由正常下发。
Q2:镜像版本号对不上(tag 3.1.5、version 文件 3.1.3、控制台显示 3.1.4)?
这是官方镜像的历史遗留现象,取证见 2.3 节。结论:以镜像 tag(3.1.4/3.1.5)为部署事实,以控制台汇总接口 /monitor/gateway/getSummaryInfo 返回的 version 字段为运行版本口径;GitHub 源码 Release 的 3.1.3 与镜像渠道不同步,不要用 Release 版本号理解镜像部署的实例。
Q3:控制台用 admin + GOKU_ADMIN_PASSWORD 密码登录报 Wrong username or password!(statusCode 100000)?
实测结论:console 首启初始化时对 -p 传入的密码做了两次 MD5 后落库(goku_admin.loginPassword 实测值为 c3f728ad750748e9f91fbbad9f566afa = md5(md5("q1w2e3r4"))),而登录接口 /guest/login 校验只做一次 MD5,极端情况下首启密码无法直接登录。实测处理:在挂载卷的 goku.db 中把 goku_admin.loginPassword 重置为 md5("q1w2e3r4") 即 c62d929e7b7e7b6165923a5dfc60cb56,随后 loginCall=admin&loginPassword=q1w2e3r4 登录成功(回显 {"statusCode":"000000","type":"guest","userID":2})。生产建议:首次部署后立即用控制台「修改密码」功能改掉默认密码。
Q4:docker compose up 时报网络不存在?
networks.goku-net.external: true 要求网络必须先手工创建(4.2 节),否则报 no such network。先执行 docker network create -d bridge goku-net --subnet 10.89.61.0/24 再 up。
Q5:升级怎么做?
停 node → 改 compose 中 node 镜像 tag → up → 控制台确认节点重新注册并核对 /node/getList 的 version 字段;console 升级同理(注意先备份挂载卷里的 goku.db)。由于项目已停止维护,镜像渠道停留在 3.1.4/3.1.5,实际不存在更高升级目标;新建设施应评估官方继任项目 Apinto(见 《Goku Gateway 3.1.x 介绍与选型指南》)。
十二、参考链接
- 本专栏认知篇(版本现状、选型对比):《Goku Gateway 3.1.x 介绍与选型指南》
- 本专栏配置篇:本专栏《Goku Gateway 3.1.x 配置参数详解》
- 本专栏命令篇:本专栏《Goku Gateway 3.1.x 管理面与 CLI 命令详解》
- GitHub 仓库:
https://github.com/eolinker/goku_lite - Docker Hub 管理台镜像:
https://hub.docker.com/r/eolinker/goku-api-gateway-ce-console - Docker Hub 网关节点镜像:
https://hub.docker.com/r/eolinker/goku-api-gateway-ce-node - 官方文档站部署教程:
https://help.eolinker.com/