昨天我第一次碰到了Docker,我对Web服务器管理一般都不太了解。只是一个抬头。
我很难在Docker容器中运行一个简单的PHP“hello world”。我用以下dockerfile构建了一个Docker容器:
FROM nanoserver/iis
MAINTAINER nanoserver.es@gmail.com
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
感觉有一些基本的东西我没有掌握。有人可以帮助我吗?
答案 0 :(得分:1)
在Windows上,您必须在Dockerfile
。
来自文档
在Windows上,目标格式必须使用正斜杠。例如,这些是有效的COPY指令。
COPY test1.txt /temp/
COPY test1.txt c:/temp/
但是,以下将不工作。
COPY test1.txt c:\temp\
如果源或目标包含空格,请将路径括在方括号和双引号中。
COPY ["<source>", "<destination>"]
另请注意,复制到图像中不存在的路径通常不会触发错误。该目录必须存在。