簡體   English   中英

docker卷和apache權限

[英]docker volumes and apache permissions

我正在使用docker為php提供大型網站服務。 問題是,當我將主機卷鏈接到容器時,我得到權限錯誤。 我知道我可以運行chmod -R 777 /var/www但不是有點危險嗎?

我的Dockerfile

FROM php:7.0.3-apache 
RUN docker-php-ext-install mysqli
RUN a2enmod rewrite
RUN a2enmod headers
RUN docker-php-ext-install pdo_mysql
RUN apt-get update -y && apt-get install -y sendmail libpng-dev

RUN apt-get update && \
    apt-get install -y \
        zlib1g-dev 

RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

RUN docker-php-ext-install mbstring

RUN docker-php-ext-install zip

RUN docker-php-ext-install gd

我的Docker-Compose.yml

version: "2"
services:
    www:
        build: .
        ports: 
            - "80:80"
        volumes:
            - ./test.com:/var/www/
        links:
            - db
        networks:
            - default
    db:
        image: mysql:5.7
        ports: 
            - "3306:3306"
        environment:
            MYSQL_DATABASE: test
            MYSQL_USER: test
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test
        volumes:
            - ./mysql:/var/lib/mysql
        networks:
            - default

任何想法如何處理主機卷權限?

正如您所懷疑的那樣,使用777 chmod絕對不是一個好主意。 您需要使用以下命令將文件夾和文件chown到apache組: chown -R <current_user>:www-data /test.com並將權限更改為755

我希望這可以幫助你

您可以為docker容器設置uid,用戶與主機用戶的uid相同。 它應該有所幫助。

我花了一些時間尋找這種情況的最佳解決方案。 我發現最干凈的方法是在主機上為用戶33設置權限。

我試過的選項:

  1. 在Docker composer文件中定義不同的用戶ID :可能多次工作,但在Apache嘗試使用內部文件時可能會導致錯誤(例如ssh密鑰)

  2. 將本地UID作為env變量傳遞並將www-data添加到同一組/ id :您必須在構建過程中將其作為Docker文件指令的一部分執行此操作,因此當您使用權限創建圖像時,它還會創建另一個粗略方案從您的主機。

我找到的不那么混亂的方法是向用戶提供本地文件的權限33.注意,您不必創建用戶。

setfacl -R -mu:33:rwx / path / to / your / files

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM