2017-07-18 39 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