繁体   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