[英]Docker php:5.6-apache 403 (because search permissions are missing on a component of the path)
[英]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所有權。 我在日常工作中設法使用了一些替代方法,希望其中一種可以為您服務:
希望能幫助到你!
在運行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.