2016-06-15 113 views
0

我想知道是否我偶然發現了一個錯誤,或者有什麼東西沒有正確記錄有關Windows上的變量替換與Docker機器和組合(docker的安裝版本是1.11.1)。變量替換不適用於Windows 10與泊塢窗撰寫

如果我運行「泊塢窗,撰寫了」命令爲YML文件看起來像這樣:

volumes: 
- ${FOOBAR}/build/:/usr/share/nginx/html/ 

而這個變量不存在泊塢窗撰寫將正確抱怨:

The foobar variable is not set. Defaulting to a blank string. 

然而,當我將其更改爲現有的環境變量:

volumes: 
- ${PROJECT_DIR}/build/:/usr/share/nginx/html/ 

然後它會不親佩爾利啓動容器,並顯示以下錯誤(試圖訪問nginx的容器會給你一臺主機不可達報文):

ERROR: for nginx rpc error: code = 2 desc = "oci runtime error: could not synchronise with container process: not a directory" 

如果我在泊塢快速入門終端將輸出正確的路徑運行echo命令我已經在環境變量中設置了。如果我將$ {PROJECT_DIR}替換爲環境變量值,容器將正確運行。

如果我嘗試使用官方php映像而不是官方nginx映像的環境變量,我會得到相同類型的錯誤消息。在這兩種情況下,如果我用$ {PROJECT_DIR}文本替換環境變量的內容,docker撰寫文件就可以工作。

所以這是一個錯誤還是我錯過了什麼?


一些瞎我已經成功地得到容器沒有錯誤消息的正常啓動,如果我使用以下(包含完整路徑本地文件)後:

volumes: 
- ${PROJECT_DIR}:/usr/share/nginx/html/ 

nginx的容器然後啓動並運行,儘管它現在無法再找到這些文件。如果我用它包含它的路徑替換變量,那麼可以再次找到這些文件。


上述行爲不一致。當我添加第二個環境變量進行替換時,它給出了oci運行時錯誤。當我刪除第二個變量並且只在我還刪除第一個變量時纔再次開始工作時,請保留給它。之後,它突然接受$ {PROJECT_DIR}/build /,但仍然沒有找到文件。

向nginx容器啓動bash會話會顯示該卷的裝入點不包含任何文件。

在這裏,我真的很茫然,碼頭工人在做什麼以及它對我的期望。特別是因爲我不知道它在擴展文件中的變量。

+0

嘿..你有沒有試過這兩種方法:'FOOBAR =/yourpath docker-compose' up,這個'export FOOBAR =/yourpath && docker-compose up'? –

+0

你能顯示'PROJECT_DIR'的實際值嗎? – vitr

+0

..和碼頭版本 – vitr

回答

1

最後得出的結論是,使用Docker Machine的Windows上的變量替換太古怪了,因爲它很有用。但是,有一種替代變量替代。

如果你需要一個碼頭工人的環境,執行以下操作:

  1. 可以部署在不運行同一操作系統
  2. 如果主機使用本地泊塢窗或通過虛擬不在乎不同的計算機盒子(這可能需要路徑變化)

那麼你最好的選擇是使用擴展。

首先,您將創建包含您需要的圖像的docker-compose.yml文件。例如,帶有MySQL的php圖像:

php: 
    image: 5.5-apache 
    links: 
    - php_db:mysql 
    - maildev:maildev 
    ports: 
    - 8080:80 
php_db: 
    image: mariadb 
    ports: 
    - 3306:3306 
    environment: 
    MYSQL_ROOT_PASSWORD: examplepass 

您可能會注意到,在此docker-compose文件中沒有定義任何卷。這就是我們要在一個名爲泊塢窗,compose.override.yml文件中定義的東西:

php: 
    volumes: 
    - /workspaces/Eclipse/project/:/var/www/html/ 

當你在一個目錄搬運工,撰寫這兩個文件做一些有趣的事情。它將它們合併到docker-compose.yml中的一個添加/覆蓋設置與docker-compose.override.yml中的設置中。

然後,在運行命令docker-compose up時,它將導致爲您正在使用的機器配置泊塢窗運行。

,如果你在你的搬運工,撰寫命令改變一些事情你可以自定義文件名類似的行爲:

docker-compose -f docker-compose.yml -f docker-compose.conf.yml up 

的細節是,碼頭工人,撰寫可以接受多個撰寫的文件,它會結合他們合爲一體。這發生從左到右。

這兩種方法都允許您創建一個基本的組合文件來配置所需的容器。然後,您可以覆蓋/添加運行docker的特定計算機所需的設置。

頁面Overview of docker-compose CLI有關於這些命令如何工作的更多細節。

相關問題