概述
本文主要讲述了以下 3 点内容:
- GateOne Docker 镜像的大坑:外挂配置文件后,导致原本的配置文件改动问题
- 外挂配置文件的正确姿势
- 以 HTTP 的形式访问
GateOne Docker 镜像的大坑:外挂配置文件后,导致原本的配置文件改动问题
最近打算弄一个云终端方便自己使用,为了以后迁移和操作方便,有两点简单的需求:
- 以 Docker 容器运行GateOne,并外挂配置文件和日志,方便以后迁移
- 以 HTTP 形式访问 GateOne,无论是自签还是通过第三方申请,我都觉得麻烦
但十分无奈的是,发现在 DockerHub 上,关于 GateOne 的文档说明太过简单,而网上大多数关于这方面的文章都停留在 2017 年左右,基本也是跟着 DockerHub 上的说明文档走了一遍,结果当自己操作的时候发现了这个小坑。
大多数文章中,无外挂配置文件,使用 Docker 安装 GateOne 的命令:
docker run -d \
-p [443]:8000 \
-h [hostname] \
--name gateone \
liftoff/gateone gateone
外挂配置文件,使用 Docker 安装 GateOne 的命令:
docker run -d \
-p [443]:8000 \
-h [hostname] \
-v /opt/gateone/config:/etc/gateone/conf.d \
--name gateone \
liftoff/gateone gateone
其实只是多了一个参数:-v /opt/gateone/config:/etc/gateone/conf.d
,然后你就会发现有以下几点不同:
- 外挂容器中少了配置文件:外挂配置文件中,少了
60docker.conf
这个配置文件 -
10server.conf
配置文件中,部分配置不同:
参数 | 外挂配置时 | 无外挂配置文件时 | 参数说明 |
---|---|---|---|
log_file_prefix |
/var/log/gateone/gateone.log |
/gateone/logs/gateone.log |
日志路径 |
pid_file |
/var/run/gateone.pid |
/tmp/gateone.pid |
PID 路径 |
port |
443 |
8000 |
端口 |
user_dir |
/var/lib/gateone/users |
/gateone/users |
用户目录 |
其实,造成 10server.conf
配置文件中这些差异的原因,还是因为 60docker.conf
这个配置文件。
我们细看一下 60docker.conf
这个文件,大概就能了解其中的原因了:
{
// Custom settings for our Docker container
"*": {
"gateone": {
"auth": "none",
"port": 8000,
"uid": 0,
"gid": 0,
"pid_file": "/tmp/gateone.pid",
"log_file_prefix": "/gateone/logs/gateone.log",
"user_dir": "/gateone/users",
}
}
}
很明显,这是在容器启动时,用于修改配置参数的文件。(这些参数有没有很眼熟)
现在我们就知道其中的缘由了:在外挂配置文件时,缺少了 60docker.conf
文件,导致了 10server.conf
文件中的参数没有得到修改,产生了两种启动方式(外挂和无外挂启动)下配置文件的差异。
外挂配置文件的正确姿势
发现了问题解决就十分简单了,核心就是:保证容器内应用的端口和配置文件的端口一致即可
具体步骤如下:
- 以外挂的形式启动 GateOne 容器
- 修改配置文件中的端口和容器内应用的端口保持一致
- 重启容器
- 以外挂的形式启动 GateOne 容器
docker run -d \
-p 10020:9999\
-h gateone \
-v /opt/gateone/config:/etc/gateone/conf.d \
-v /opt/gateone/logs:/var/log/gateone/gateone.log \
-v /opt/gateone/users:/var/lib/gateone/users \
--name gateone \
liftoff/gateone gateone
说明:这里分别挂载了配置文件、日志文件、用户目录
- 修改配置文件中的端口和容器内应用的端口保持一致
从上面的命令可以看到,容器内以 9999 的端口启动的应用,故只需把挂载到宿主机中配置文件端口改为 9999端口即可。修改10server.conf
配置文件:
sed -i "s/443,/9999,/g" /opt/gateone/config/10server.conf
- 重启容器
docker restart gateone
当然,如果你十分执着的想用容器无挂载启动时的配置文件,有两种方法:
- 无挂载直接启动 GateOne 容器,拷贝容器中的配置文件到宿主机,在以挂的方式启动容器
- 以外挂的形式启动 GateOne 容器,再根据
60docker.conf
这个文件,修改相应的配置即可
以 HTTP 的形式访问
以 HTTP 的形式访问 GateOne,就是常规的配置操作了,修改宿主机中 10server.conf
中的相关配置如下即可:
"disable_ssl": true,
参考:https://blog.ilemonrain.com/docker/liftoff-gateone.html
http://www.361way.com/gateone/5962.html
https://www.jianshu.com/p/b8123a8178de