如何在Docker中使用动态生成的Nginx配置文件?

时间:2017-12-25 18:07:50

标签: docker nginx docker-compose

我正在使用Nginx和ExpressJS(NodeJS)开发应用程序,我正在使用Docker(使用docker-compose

我没有写过保留Docker的应用程序。

我的应用程序动态创建Nginx配置。最初,这些Nginx配置放在我的应用程序中的标准目录中。我已经将Nginx配置为从该目录中读取所有* .conf文件,一切都很顺利。

现在我正在使用Docker,我使用了两个不同的容器:一个用于Nginx,另一个用于我的应用程序。

问题:如何将生成的配置文件从一个容器移动到另一个容器?<​​/ p>

有没有更好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以同时运行安装相同音量的容器 请参阅“Docker Volumes”。

第一个容器将在该卷中生成配置文件 第二个容器(NGiNX)会读它们。

请参阅示例Volume configuration reference

version: "3"

services:
  db:
    image: db
    volumes:
      - data-volume:/var/lib/db
  backup:
    image: backup-service
    volumes:
      - data-volume:/var/lib/backup/data

volumes:
  data-volume:

这里相同的音量安装了两次。

答案 1 :(得分:1)

所有棘手的VonC解决方案都可以运行,它可能会使您的部署过程变得复杂,因为两个容器都需要位于同一台服务器上并共享一个持久卷,这可能会使状态管理和启动变得复杂,除非您在生产中使用docker compose此外,您还需要服务发现服务才能找到彼此,如果您只是尝试对单个服务进行原型设计,则可能不需要这些服务。

您可以选择使用supervisord在同一个容器中与快递应用程序一起运行nginx。

以下是docker文档中有关如何执行此操作的参考: https://docs.docker.com/engine/admin/multi-service_container/

我认为如果nginx作为您的快速应用程序的支持角色,这对您的用例有意义,并且这两种服务都可以被视为同一微服务的一部分。