因为项目需求,我在docker上制作了一个自带nginx和php以及其它功能的镜像。在本地测试时,我以80:8080启动镜像,可以顺利访问网页。
docker run -p 80:8080 -v xxx:xxx --name xxx --privileged xxx
现在我将这个镜像转移到了团队内其它成员购买的宝塔面板上,他在服务器上做前端测试,并且已经运行了一个网站。
我使用了宝塔自带的docker功能,我同样使用了上述指令,尝试将这位成员的网页根目录作为数据卷搭载在我的容器内的相应位置上。
然而,我不知道怎样访问docker容器内的nginx服务端和它的网页。我尝试了用宝塔的IP+80端口来访问但是失败了,我担心原先这位成员测试的这个服务端和docker容器内运行的nginx服务端产生冲突。
简而言之,现在是在一个已经运行了服务端的环境里装入了一个带有另一个服务端的docker容器。我应该如何通过外网访问到我的docker容器内的服务端呢?
首先安装宝塔时应该已经安装了 Web 服务器,比如
Nginx
或者Apache
,这个 Web 服务器已经占用了 80 端口,所以你 docker 容器不能再映射到主机的 80 端口上,可以考虑映射到其他端口,再通过主机反向代理的方式访问。1、docker 启动命令可以修改为:
此时可以通过:http://IP:8080 的方式测试能不能访问到 docker 项目,如果用的云主机,还需要在云主机的防火墙内放行 8080 端口。
2、宝塔建立空网站,配置反向代理,以 Nginx 为例:
将以上配置添加到宝塔站点的配置文件中,这个配置的含义是所有发送到这个站点的请求全部转到本地的 8080 这个端口去处理。