服务器中使用到docker,将前后端分别创建成docker容器进行部署
介绍
前端:nginx部署静态页面,监听端口 80
后端:Go部署,监听端口8080
我需要使用浏览器访问ip地址80端口访问到index静态页面,同时对于一些网络请求也需要通过80端口进入到服务器。
前期准备
安装docker同时创建好所需要容器
安装教程可以参考WSL2上使用docker安装nginx
我这里server是后端,nginx部署前端
服务器没有向外开通8080端口,因此无法直接访问8080端口
为方便起见可以使用docker创建个网络,将所需要的容器放到同一网络名下,方便后期管理
这里我通过
docker network create [网络名称]
创建网络
通过
docker network connect [网络名称] [容器名称]
将需要的容器连入同一网络下
通过docker inspect [容器名]
可以看到网络信息
可以看到server和nginx容器都在同一网络下
前端请求路径
由于服务器8080端口没有向外开放,只能80端口请求
可以使用nginx的反向代理服务
将请求改成一个识别标志,通过nginx监听到后代理到后端的8080端口上,此时因为nginx和server是在同一网络下,可以实现请求。
请求通过/api实现,比如我这里之前请求数据是http://ip地址:端口号 改成 /api 通过/api来标识代理符号 ,距离代理在下面nginx中配置
nginx代理配置
进入nginx配置文件
修改
由于之前设置过网络,这里就可以直接使用容器名字当ip了,当然你也可以使用server的ip地址
注意这里 /api/ 的反斜杠一定要配好,不然可能会路径出现问题,如果出现问题,可以通过docker日志查看后端的情况。
配置完成后
重新加载nginx通过
docker exec -it [nginx的容器名字] nginx -s reload
注意每次修改配置文件后都需要重新加载下
完成
配置完成数据获取成功
后端日志可以看到确实请求
至此部署结束。