【发布时间】:2022-02-07 00:27:04
【问题描述】:
我不熟悉同时使用 docker 和 nginx,所以我提前为我的简单问题道歉,尽管在 youtube 上浏览了许多资源,但我无法得到答案。
我创建了一个 ubuntu 服务器并运行了以下命令
sudo apt install nginx
现在我有一个非常简单的烧瓶应用程序 docker 镜像(在 docker hub 上公开可用,不是我开发的),我想将我的 nginx 配置为运行上述镜像的容器的反向代理。
我的nginx配置中反向代理的代码如下:
server{
listen 80;
location / {
proxy_pass "http://192.168.0.20:8000"
}
}
192.168.0.20 是我的服务器 ip,8000 是我转发 docker 容器的主机端口,例如
docker container run -p 8000:5000 <image>
但是当我运行 http://192.168.0.20/ 时,它会打开默认的 nginx index.html,而我希望它转发到我的应用程序容器以提供该静态文件,因为当我运行 http://192.168.0.20:8000/ 时,它会给出我想要的输出。
这听起来像是一个愚蠢的问题,但我一直在努力掌握 nginx。
提前感谢您的帮助!!!
【问题讨论】:
-
当你想让容器相互通信时,你应该将它们添加到同一个docker网络中,并使用服务名作为主机名。尝试连接到您的主机 IP 是错误的方法。最简单的方法是使用
docker-compose一起运行容器,它将为堆栈中的所有容器使用默认网络。 -
我没有 nginx 作为容器,而是直接安装在 ubuntu 服务器上,只有一个图像。我也不知道在哪里设置 docker compose。
-
如何将 nginx 配置放入容器中?因为它为您提供了默认的欢迎页面,所以它似乎没有选择您的配置。
-
@HansKilian 我想我可能错过了这一步,因为我似乎无法找到进入容器或可以映射配置卷的位置