Docker部署chaoxing自动签到指南
本文最后更新于:2024年8月11日 晚上
Docker Guide
拉取镜像
下载docker镜像,国内站点会比较慢
1 |
|
(待更新国内站点)
本机部署
1 |
|
你可以直接通过这个方式创建一个容器,然后使用服务器的IP访问,但直接暴露你服务器的公网IP并不安全(局域网服务器除外),且IP地址不方便记忆,你可以使用一个域名来指向他。
且容器默认使用localhost
地址来访问API,因此你的容器的服务端很可能出现本地(内网)登录没问题,外网访问无法登录的奇妙问题。如果你希望你的服务能在外网被访问而不是只在内网访问的话,建议使用下面的方案。
Docker化部署
如果你应用如下的解决方案,请不要使用上面的部署指令。一般使用:
1 |
|
也就是说不需要进行端口映射,但你必须把这个容器加入网桥,Docker提供了一个默认的网桥Bridge
为了方便,最好同时指定这个容器的IP,否则服务器重启或容器重启后可能导致IP发生变化
1 |
|
还有一些复杂的指令例如--restart
你可以按需使用
解决方案I
我们首先关注你的服务器的拓扑结构,以我的服务器为例的话。他的访问顺序是【服务器->Docker化的NGINX->chaoxing容器的NGINX】
来完成整个访问流程,当你访问他的UI界面时,登录使用的地址是localhost
,因此你必须修改他的后台。
1 |
|
此时你登录会通过你的域名的5000端口进行,你的域名应当指向这个服务器的IP地址,同时服务器开启5000
端口的访问,并在nginx
内对5000
端口进行反代理。
一个nginx文件示例(这里只展示Server块):
1 |
|
解决方案II
这样非常的不优雅,而且使用域名也会暴露你的服务器IP,如果你想套CDN的话,使用5000端口的服务方法显然是不被接受的。如何只通过一个域名访问呢?
我们首先来看原来的拓扑图:
一个非常自然的想法就是通过反代理部分文件路径的方式来完成5000端口的访问,这是调整后的拓扑图:
实际上还有一种办法,就是使用一个域名(或者子域名、字路径)指向5000端口,然后
baseUrl
使用这个域名即可。但这依然需要开放两个端口,对我来说我并不喜欢(而且5000端口已经被占用了)
就是说,将baseUrl
的地址改为从yourDomain.com:5000
改成yourDomain.com/allinone
,但是这样的话他真实的访问地址是https://yourDomain.com/allinone/login...
,你必须把allinone
剔除掉才能保证访问正常,这个可以很简单的通过Nginx设置实现。这是示例:
1 |
|
收尾
上面两种方案你只需要采用一种即可,在这之后你也许得注意下面的内容:
刷新NGINX:在nginx容器中使用
nginx -t
检查你的配置是否有误,如果看到两个OK!
就行,之后运行nginx -s reload
,你的反代理程序就应用上去了。更多nginx的排障内容请移步到官方文档。重新构建
你配置完成NGINX、修改完
baseURL
后还必须重新在容器中执行构建指令才能应用你的设置:1
2# 在容器里
pnpm build等待构建完成后访问前端进行测试即可。