2016-04-21 42 views
1

我正在嘗試使用全新安裝的Phundament 4.3.0-beta6,Docker 1.11.0和Docker Compose 1.7.0來容納Yii2 Web應用。主機是基於Ubuntu的Linux Mint 17.3。將Phundament web應用移至生產

一切工作都很好dev環境,但我沒有找到正確構建生產映像的方法。

我已經使用過老版本的Phundament和Docker,運行在相同的問題中,所以我很肯定我沒有面對一個bug:我只是誤解了一些東西。

問題是,當地發展(docker-compose.override.yml,重寫docker-compose.yml)泊塢窗,撰寫文件容器安裝根項目文件夾在兩個PHPnginx的:

volumes: 
    - .:/app 

一些定製我後重新構建php容器,應用程序代碼已成功添加到容器中(如Dockerfile中所述),因此我可以編輯docker-compose.override.yml文件,從php中刪除volume指令容器,一切都OK。

但是,當我做同樣與nginx的容器和運行docker-compose up -dnginx的給我回一個404這意味着它沒有找到着陸頁進PHP容器。它只是在我安裝項目文件夾卷時發現它。

我想這不是預期的行爲......我做錯了什麼?

回答

1

基本上,nginx只需要web文件夾的PHP圖像index.phpassets/

所以,你可以使用volumesvolumes_from,像這樣:

php: 
    volumes: 
    - /app/web 
nginx: 
    volumes_from: 
    - php 

另一種選擇是對的方式配置nginx,它轉發所有請求到PHP的容器,但是這不是真的需要靜文件。

注意!當您重新部署應用程序時,您可能需要killrm -v您的PHP和nginx容器對捲進行更改。

隨意創建一個問題,或者您有關於改進等想法...

全面披露:我Phundament的核心開發人員。

+0

謝謝您的回答,謝謝* * diemeisterei * * phd *的其餘部分!好的,所以這個配置的重點是讓'nginx'直接提供靜態文件。我仍然不清楚的是,如果在製作過程中,我應該:1.將app/web文件夾上傳到服務器,以便裝入音量或2.重新編譯「phundament/nginx」,並添加「COPY web」/app/web「,所以它可以從容器中使用。 – David

+0

不客氣:)當你建立* phd *你['COPY'](https:// github。com/phundament/app/blob/b28dec88d9fae6f51bedaaa800f2cff9f7f8da86/Dockerfile#L18)'/ app/web'文件夾放到你的'php'圖像上。通過聲明一個'volume',你可以在其他容器中使用它(在相同的路徑下)。由於'nginx'使用'volumes'from''php'靜態文件在那裏可用。所以不需要建立兩個圖像,你可以使用公共的'phundament/nginx-one'圖像。 – schmunk

+0

完美!現在我懂了。我需要(如你所寫)'卷: -/app'而不是'volumes:-.:/ app',所以它使用已經複製到'php'圖像文件夾而不是我的本地文件夾。現在事情完美無缺。你提到的'-v'標誌也很有用;我認爲,直到現在,我沒有有效地刪除以前的卷,所以我得到了誤導結果。再次感謝。 – David