Nginx是内部或外部Docker

时间:2016-10-04 08:21:23

标签: nginx docker

当我读到一些关于Nginx和Docker的文章时。我知道Nginx是一个Web服务器,它的工作是从客户端获取请求并向特定应用程序内部机器提交请求。 Docker是一个容器,可以包含我的应用程序内部。它可以包含很多东西,比如db,web application。它可以像Unix机器一样安装一些软件包 我的问题是配置Nginx用于Docker应用程序。我们将安装Nginx内部Docker或内部我们的机器(ubuntu或Centos ...)?

3 个答案:

答案 0 :(得分:4)

您希望在自己的容器中运行Nginx,然后将端口发布到主机,因此当请求进入主机上的端口80时,Docker会将其引导到Nginx容器来处理它

应用程序的所有其他部分(Web前端,API,数据库,缓存等)都在自己的容器中运行,Nginx是需要外部可用的任何内容的代理。

这种方法的主要优点:

  • 您将所有Nginx配置构建到Docker镜像中,这样您就可以在任何地方运行它,而不需要复制conf文件;
  • 您对主机的依赖性最小 - 当您添加新计算机或替换它时,您只需安装Docker然后运行所有容器;
  • 您的应用容器不需要公开显示 - 如果您在主机上运行Nginx,然后代理您需要将其端口发布到主机的应用。通过在Docker网络中的容器中运行所有内容,应用程序不需要发布其端口,例如应用程序容器中的端口5000可供Nginx容器使用,但不能在主机上使用。

答案 1 :(得分:1)

NGINX将存在于docker容器中。您将在容器中打开端口80,以允许主机向docker容器内的NGINX发出HTTP请求。

您可能希望在dockerfile中使用官方的NGINX docker容器。

https://hub.docker.com/_/nginx/

您的dockerfile将有......

FROM NGINX(在顶部)

EXPOSE 80(http)

EXPOSE 443(https)

然后当您运行docker容器时,使用-P(大写P)标志使两个公开端口都可用于主机。

答案 2 :(得分:0)

它可以在两者上。在可扩展性方面,我将选择自助泊坞机容器。这样,您可以以不同的方式增长您的前端和Web服务器(或反向代理),并获得dockerized版本的好处(放入另一个实例和/或服务器,转到云等)。