тома докера и разрешения Apache - PullRequest
0 голосов
/ 06 декабря 2018

Я использую докер для обслуживания огромного сайта с 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

Есть идеи, как обрабатывать разрешения тома хоста?

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Вы можете установить uid для пользователя контейнера Docker, равного uid пользователя хоста.Это должно помочь.

0 голосов
/ 09 августа 2019

Я провел некоторое время в поисках лучшего решения для этого случая.Самым чистым способом, который я нашел, была установка разрешения для пользователя 33 на хост-компьютере.

Опции, которые я пробовал:

  1. Определение другого идентификатора пользователяв файле Docker composer : может работать много раз, но может вызывать ошибки, когда Apache пытается использовать внутренние файлы (например, ключи ssh)

  2. Передача локального UID какПеременная env и добавление www-данных в ту же группу / id : Вы должны сделать это во время процесса сборки как часть инструкций файла Docker, поэтому он также создает другой схематичный сценарий, когда вы создаете образ с разрешениями с вашего хостамашина.

Менее грязный способ, который я обнаружил, - это предоставление полномочий вашим локальным файлам пользователю 33. Обратите внимание, что вам не нужно создавать пользователя.

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

0 голосов
/ 06 декабря 2018

Это определенно не хорошая идея, чтобы chmod с 777, как вы уже подозревали.Вам нужно будет упаковать папки и файлы в группу apache: chown -R <current_user>:www-data /test.com и изменить права доступа на 755.

Надеюсь, это поможет вам

...