2016-08-23 92 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