2016-08-23 89 views
0

我是新来的码头工人,所以让我知道我是否应该做一些完全不同的地图都包含文件夹,但在这里不用..如何使用卷路径泊坞窗

我想创建内的体积一个nginx容器,它将所有启用站点的配置文件映射到容器上的位置。值得注意的是,这些文件分散在多个可随机命名的文件夹中。可是等等!我可以肯定地告诉你,.conf文件将永远在一个特定的文件夹中,只有1层深(因为这是我更喜欢的布局)。这是一个基本的布局说明我的意思:

- images/ 
    - nginx/ 
    - docker-compose.yml 
- sites/ 
    - site_a/ 
     - vhost/ 
      site_a.conf 
    - site_b/ 
     - vhost/ 
      site_b.conf 

我曾尝试声明为nginx的卷时,要做到这一点:

- ../sites/*/vhost/:/etc/nginx/sites-enabled 

然而,我得到以下错误:

ERROR: for nginx Cannot start service nginx: mkdir /c/Users/Yates/Documents/docker/sites/*: protocol error 

我有种错误,但我找不到任何告诉我如何完成我最终想要的东西。任何帮助将非常感激。

回答

1

这是一个概念性问题,您的概念非常脆弱,最有可能导致问题。

你在做什么错的是:

  • 为在httpd服务器的配置保持在站点的数据/配置结构内或至少其嵌套在
  • 您尝试配置的动态量'服务'网站使用静态+嵌套文件夹。你在混合“配置”和数据。尽量把你的配置成类似领事/ ETCD /饲养员和生成配置USINT分蘖(confd /领事模板)

如果你强迫它,您可以:

方式) 然后你在nginx容器中运行一个入口点脚本,一些find表达式遍历你的“站点”文件夹,找到任何站点,使用vhost文件夹并从那里创建一个符号链接到/ etc/nginx /网站启用

您还需要考虑的缺失,所以挑选一个好的名字空间的符号链接,如mysite.automated.conf和之前的入口点创建符号链接,运行rm /etc/nginx/sites-enabled/*automated.conf冲洗可能过期/删除的。你也可以做更新的方式,但这更复杂..

路B)

如果可以,改变一般情况下,为Extrac网站所有的“虚拟主机”的结构到一个文件夹,可以说你将有

sites/vhosts/*.sites.conf 
sites/data/siteA/ 
sites/data/siteA/ 

,然后安装卷阅读 - 仅在nginx和符号链接网站/虚拟主机到/ etc/nginx/site-enabled(文件夹本身)

2

很确定你不能这样做。

您可以做的是 symlink将所有.conf文件复制到主机上的单个目录中,并将其用作卷装入点。或者只安装sites/根目录。

+2

我相信符号链接到安装卷以外的文件将会破坏卷。 –

+0

@保罗 - 啊,说得通。刚刚测试过它,它不会中断音量,但不能遵循符号链接。硬链接可能会起作用,但这是一件相当不寻常的事情。 – Matthew