Apache на Docker: установите права доступа к файлам в общей среде веб-хостинга - PullRequest
0 голосов
/ 28 мая 2018

Я новичок в докере.Я пытаюсь переключиться с традиционной настройки виртуальных машин на докеризованную для нескольких веб-сайтов, которыми я управляю.Я пытался с Docker Compose и Wordpress, это мой файл docker-compose.yml:

version: "3"

services:
  blog2:
    image: wordpress:4.9.6-apache
    volumes:
      - blog2:/var/www/html
    environment:
      WORDPRESS_DB_PASSWORD:
    depends_on:
      - mysql

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD:

volumes:
    blog2:

Он работает и создает том blog2, к которому я могу получить доступ в основной файловой системе из /var/lib/docker/volumes/blog2.Я также могу соединиться с SFTP и редактировать файлы, все работает.Файлы в каталоге /var/www/html принадлежат пользователю www-data.Если я их отредактирую, то все в порядке, но если я добавлю новый файл ... он принадлежит пользователю, которого я использую на сервере (в моем тестовом случае это root, но это может быть любой другой пользователь).Таким образом, они не могут быть изменены с помощью www-data, если веб-серверу необходимо отредактировать или удалить их.

Как я могу решить эту проблему?Моя идея состоит в том, чтобы добавить пользователя в каждый контейнер Docker, добавить его в группу www-data и выделить этому пользователю весь файл / var / www / html, чтобы начальные и будущие файлы могли быть красными или записанными обоими, независимо от того,если они созданы www-data или этим пользователем.

Может ли это работать?И могу ли я записать его в файл docker-compose.yml, чтобы настроить его при выполнении docker-compose up -d при создании контейнера?:)

Заранее спасибо.

1 Ответ

0 голосов
/ 28 мая 2018

Одним из решений вашей проблемы является запуск контейнера WordPress с использованием другого пользователя.Это описано в разделе Запуск от имени произвольного пользователя на странице dockerhub для изображения wordpress .

Внутри файла составления докера вы можете указать пользователя, который будет работать внутри контейнера.Например, вы можете указать пользователя 1000, который будет сопоставляться с пользователем 1000 на машине.Таким образом, вы можете найти uid пользователя www-data и использовать этот uid для запуска контейнера:

...
services:
  blog2:
    image: wordpress:4.9.6-apache
    user: 1000:1000  
    volumes:
      - blog2:/var/www/html
    environment:
      WORDPRESS_DB_PASSWORD:
    depends_on:
      - mysql
...
...