Как обращаться с разрешениями с помощью docker - nginx/php-fpm

83
11

Я пытаюсь развернуть очень простое приложение Symfony, используя nginx & php-fpm через Docker.

Две докеры:
1. web: работает nginx
2. php: запуск php-fpm; содержащий источник приложения.

Я хочу создавать изображения, которые могут быть развернуты без какой-либо внешней зависимости. Вот почему я копирую исходный код внутри контейнера php.
О процессе разработки; Я переопределяю /var/www/html том с локальным путем.

# file: php-fpm/Dockerfile
FROM php:7.1-fpm-alpine

COPY ./vendor /var/www/html
COPY . /var/www/html

VOLUME /var/www/html

Теперь файл конфигурации для докеры.

# file : docker-compose-prod.yml
version: '2'
services:
web:
image: "private/web"
ports:
- 80:80
volumes_from:
- php
php:
image: "private/php"
ports:
- 9000:9000

Проблема заключается в разрешениях.
При доступе к локальному хосту Symfony запускается, но папки с кэшем/журналами/сеансами недоступны для записи.

nginx использует /var/www/html для обслуживания статических файлов. php-fpm использует /var/www/html для выполнения php файлов.

Я не уверен в этой проблеме. Но как я могу быть уверен в следующем:

/var/www/html должны быть прочитаны для nginx? /var/www/html должны быть доступны для записи для php-fpm?

Примечание. Я создаю изображения из MacbookPro; кэш/журналы/сеансы - 777.

спросил(а) 2017-07-25T17:37:00+03:00 3 года, 3 месяца назад
1
Решение
57

docker-compose.yml поддерживает user директиву по службам. Документы упоминаются только в команде run, но она работает одинаково.

У меня есть аналогичная настройка, и я это делаю:

# file : docker-compose-prod.yml
version: '2'
services:
web:
image: "private/web"
ports:
- 80:80
volumes_from:
- php
php:
image: "private/php"
ports:
- 9000:9000
user: "$UID"

Я должен запустить export UID перед запуском docker-compose а затем установить пользователя по умолчанию для моего текущего пользователя. Это позволяет вести журнал/кэширование и т.д. Работать так, как ожидалось.

ответил(а) 2017-07-25T18:23:00+03:00 3 года, 3 месяца назад
41

Я нашел решение; Но если кто-то может объяснить лучшие практики, это будет оценено!

Папки кеш/журналы/сеансы из контекста докера, где не пусто (на хосте).
Теперь, когда папки были сброшены, Symfony создает их с хорошими разрешениями.

Я нашел людей, использующих usermod для изменения UID, т.е. 1000 для www-data/nginx... Но это кажется уродливым взломом. О чем вы думаете?

ответил(а) 2017-07-25T18:09:00+03:00 3 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема