1

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

有更好的解决方案吗?

4

0 回答 0