2017-07-18 10 views
0

私は昨日Dockerに初めて触れました。一般的にWebサーバーの管理についてはよく分かりません。ただ頭を上げる。インポートされたファイルはDockerコンテナ内に表示されません

Dockerコンテナ内で実行される単純なPHP「hello world」を作るのに苦労しています。私はこのDockerfileがCでコンテナを作成するために期待される

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とドッカーコンテナを構築しています\の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

Windowsでは、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

関連する問題