簡體   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