我正在尝试在Windows 10上使用Docker容器建立PHP + Apache开发环境。
PS H:\> docker version
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:05:22 2017
OS/Arch: windows/amd64
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.24)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:15:52 2017
OS/Arch: windows/amd64
Experimental: true
我的容器是一个窗口的容器,其中microsoft/windowsservercore
为基本图像。
我面临的一个问题是当源代码通过卷挂载时,apache不喜欢文件权限。 No input file specified.
是显示的错误。 access.log
提供"GET /info.php HTTP/1.1" 404 25
这是具有已安装卷的容器内的文件权限。
PS C:\www> get-acl .\info.php | format-list
Path : Microsoft.PowerShell.Core\FileSystem::C:\www\info.php
Owner : O:S-1-5-21-1258723895-351397710-2907126007-1740
Group : G:S-1-5-21-1258723895-351397710-2907126007-513
Access : BUILTIN\Administrators Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Users Allow ReadAndExecute, Synchronize
NT AUTHORITY\Authenticated Users Allow Modify, Synchronize
Audit :
Sddl : O:S-1-5-21-1258723895-351397710-2907126007-1740G:S-1-5-21 .
-1258723895-351397710-2907126007-513D:AI(A;ID;FA;;;BA
)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
当我将info.php
复制到容器中时,apache正常工作。
PS C:\www>
Path : Microsoft.PowerShell.Core\FileSystem::C:\www\info.php
Owner : User Manager\ContainerAdministrator
Group : User Manager\ContainerAdministrator
Access : BUILTIN\Administrators Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
User Manager\ContainerAdministrator Allow FullControl
BUILTIN\Users Allow ReadAndExecute, Synchronize
Audit :
Sddl : O:S-1-5-93-2-1G:S-1-5-93-2-1D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)
(A;ID;FA;;;S
-1-5-93-2-1)(A;ID;0x1200a9;;;BU)
我的解决方法是使用Robocopy
从已装入的卷文件夹复制到DocumentRoot
。问题是我必须等待几秒钟才能将源代码更改反映在容器中。
有更好的解决方案吗?