2017-07-18 45 views
0

我昨天碰到泊塢首次裏面,​​我不知道很多關於一般的Web服務器管理。只是一個頭。導入的文件不會出現泊塢容器

我努力使一個簡單的PHP的「Hello World」泊塢窗容器內運行。我建立了一個碼頭工人容器以下dockerfile:

FROM nanoserver/iis 

MAINTAINER [email protected] 

ADD http://windows.php.net/downloads/releases/php-5.6.31-Win32-VC11-x64.zip php.zip 
ADD https://nanoserver.es/nanofiles/vcruntime140.dll C:\\Windows\\System32\\vcruntime140.dll 
ADD https://nanoserver.es/nanofiles/iisfcgi.dll C:\\Windows\\System32\\inetsrv\\iisfcgi.dll 
ADD https://nanoserver.es/nanofiles/info.dll C:\\inetpub\\wwwroot\\info.php 
COPY hello.php C:\\inetpub\\wwwroot\\hello.php 

ENV PHP C:\\php 

RUN powershell -command Expand-Archive -Path c:\php.zip -DestinationPath C:\php 

RUN setx PATH /M %PATH%;C:\php 

ADD https://nanoserver.es/nanofiles/php.ini C:\\php\\php.ini 

RUN powershell -command \ 

    rm C:\Windows\System32\inetsrv\config\Applicationhost.config ; \ 
    Invoke-WebRequest -uri https://nanoserver.es/nanofiles/Applicationhost.txt -outfile C:\\Windows\\System32\\inetsrv\\config\\Applicationhost.config ; \ 
    Remove-Item c:\php.zip -Force 
# The above request fails, but I don't see how it would be relevant to my question. 

CMD ["powershell.exe"] 

我希望這個Dockerfile創建一個用c容器:\的Inetpub \ wwwroot的\ info.php的,C:\的Inetpub \ wwwroot的\ hello.php和C:\ PHP。然而,在容器內PowerShell的給了我這樣的輸出:

PS C:\inetpub\wwwroot> ls 


     Directory: C:\inetpub\wwwroot 


    Mode    LastWriteTime   Length Name 
    ----    -------------   ------ ---- 
    -a----  4/11/2017 11:55 AM   703 iisstart.htm 
    -a----  4/11/2017 11:55 AM   99710 iisstart.png 

感覺就像有一些基本的,我沒有把握。有人可以幫我在這裏嗎?

回答

1

您所使用正斜槓的窗戶在Dockerfile路徑。

官方文檔:https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile

從文檔

在Windows上,目標格式必須使用正斜槓。例如,這些是有效的COPY說明。

COPY test1.txt /temp/ 
COPY test1.txt c:/temp/ 

然而,下面將工作。

COPY test1.txt c:\temp\ 

如果源或目的地包括空格,括在方括號和雙引號的路徑。

COPY ["<source>", "<destination>"] 

另請注意,複製到圖像中不存在的路徑通常不會觸發錯誤。該目錄必須存在。

+0

謝謝!不幸的是,它不適合我。我修改了Dockerfile以下幾點:https://pastebin.com/raw/SA956z9y 儘管如此,沒有預期的PHP-文件的容器內出現。 考慮到我的第一個Dockerfile已沒有錯誤地執行,是我的語法自動更正給我嗎? – Magnus

+1

嘗試'COPY [「hello.php」,「C:/ inetpub/wwwroot /」]'? ..它應該做同樣的。也許還可以在不使用緩存的情況下構建:'docker build --no-cache'。 – Grimmy

+1

@Magnus當您複製文件時,是否有'C:/ inetpub/wwwroot /'不會退出?最糟糕的情況是,您可以在複製之前創建目錄。 – Grimmy