繁体   English   中英

Docker php:5.6-Apache开发环境缺少卷安装权限

[英]Docker php:5.6-Apache Development Environment missing permissions on volume mount

我正在尝试创建一个由php:5.6-apache映像,一个mysql映像和一个包含将位于/ var / www / html /的网站的卷装载组成的开发环境。 该卷装载上具有October CMS。

我需要docker用户具有对该卷装载的权限,但我不希望它成为该卷的所有者,因此我可以轻松地在容器外部对其进行修改,并立即查看我的修改。

我的docker文件如下:

FROM php:5.6-apache
MAINTAINER me <me@internet>

# Install modules
RUN apt-get update
RUN apt-get -f install -y
RUN apt-get install -y wget
RUN apt-get update && apt-get install -y \
    libmcrypt-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng12-dev \
    php-apc
RUN docker-php-ext-install mbstring mysql mcrypt pdo pdo_mysql zip
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/

RUN docker-php-ext-install gd

WORKDIR /var/www/html/

VOLUME /var/www/html/

RUN a2enmod rewrite

RUN usermod -a -G www-data root

RUN php5enmod mcrypt && service apache2 restart

我的Docker-compose包含MySql数据库的环境变量。

按原样运行时,只会出现500错误,但是如果将卷的所有权更改为www-data,该站点就会正常运行。

我尝试使用环境变量将Apache用户和组更改为root用户,但是没有用。

任何建议,不胜感激。

更新:我找不到能以我想要的确切方式解决该问题的解决方案,最终实现了一些我认为更像是hack的东西。 我在dockerfile中添加了以下几行:

RUN usermod -u 1000 www-data
RUN groupmod -g 1000 www-data

这些行更改了泊坞窗内的用户和组以匹配所有者,从而赋予了其完全访问权限。

请注意,尽管在某些情况下您的系统无法将您识别为用户1000和组1000。如果这不起作用,请猛击docker apache容器,并检查该卷作为用户ID和组ID的内容,然后相应地更改上面的行。

您在安装的卷中共享的所有文件都必须具有在容器中运行CMD的用户相同的uid:guid所有权。 我在日常工作中设法使用了一些替代方法,希望其中一种可以为您服务:

  • 将资源文件复制到另一个位置,并在入口点cp中将它们复制到正确的路径,因为执行入口点脚本的用户与运行CMD的用户相同,因此您的文件将具有相同的uid:guid。 您可以在公共詹金斯码头工人形象中看到这种模式
  • 模仿 docker主机中所需文件的用户和组所有权架构,以这种方式,容器和主机对于要使用的文件具有相同的UID / GUID,Web服务器在尝试执行以下操作时不会杀死自己读取这些文件。
  • 使用postgresql公共docker映像之类的入口点脚本即时更改所有权

希望能帮助到你!

在运行docker-machine start default您需要ssh进入其中并运行以下命令以使上述命令完全起作用:

sudo mkdir --parents /var/www/html [假设/ var / www / html是virtualbox中的共享文件夹]

sudo mount -t vboxsf -o uid=1000,gid=1000 var/www/html /var/www/html [这是为了确保下一部分可以使用的uid和gid为1000]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM