在linux系统中,简单使用nginx反向代理docker中容器提供的服务,这里以fastgpt为例。

1.nginx安装

有两种方式,一种通过配置docker-compose.yml文件部署,一种通过命令行部署,这里先用命令行的方式:

docker pull nginx
docker images

通过这两行命令,将nginx映像下载到本地,为方便更改容器内配置文件,现在现在本机创建几个配置文件:nginx.conf, default.conf,最后创建一个名字为logs文件夹,方便后续查看日志,使用命令:

docker run -d -p 80:80 --name nginx nginx

创建一个容器nginx,用于本机配置文件初始化:

docker cp nginx /etc/nginx/nginx.conf 你的路径/nginx.conf
docker cp nginx /etc/nginx/conf.d/default.conf 你的路径/default.conf

现在可以将这个容器删除了:

docker stop nginx
docker rm nginx

创建真正要用的容器,并将本机配置文件映射到容器中:

docker run -d -p 80:80 --name nginx -v 你的路径/nginx.conf:/etc/nginx/nginx.conf -v 你的路径/logs:/var/log/nginx -v 你的路径/default.conf:/etc/nginx/conf.d/default.conf nginx

2.docker 网络配置

docker可通过bridge网络方式连接各个容器,这里可以创建一个新网络,并查看当前网络:

docker network create -d bridge fast
docker network ls

这里我们已经有fastgpt所在的bridge网络,将nginx容器和另外一个提供服务的容器添加到fastgpt网络中,并查看:

docker network connect fastgpt_fastgpt nginx
docker network connect [网络] [容器]
docker network inspect fastgpt_fastgpt

记住提供服务容器的ip。

3.开始配置

修改本地default.conf文件,目前只需在location添加一行代码(或者是ip,有的时候ip不一定能成功:

    location / {
        proxy_pass http://fastgpt:3000/;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

重启nginx容器

docker restart nginx

在浏览器中访问localhost便会跳转到你需要的服务。

参考:

Docker之容器连接到指定网络_docker将容器加入网络命令-CSDN博客

nginx反向代理访问其他容器_docker nginx 反向代理 其他容器-CSDN博客

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐