我正在尝试在 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
. 问题是我必须等待几秒钟才能将源代码更改反映在容器中。
有更好的解决方案吗?