Смонтированный том Docker (compose) недоступен для записи

Я использую docker compose для создания nginx-прокси, а затем снова docker compose для подключения к нему нескольких веб-сайтов. Вроде бы все работает нормально, за исключением того, что все папки недоступны для записи. В этом примере я буду использовать сайт Joomla, но так бывает со всеми. Я использую пользователя root (Ubuntu Server 18.04), а владельцем файлов является root. Также кажется, что запуск «id» как на хост-компьютере, так и в контейнерах возвращает 0, который является моим корневым пользователем. Я в недоумении, как заставить его работать. Итак, для начала, вот прокси:

docker network create nginx-proxy

И:

version: "3"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

networks:
  default:
    external:
      name: nginx-proxy

И для сайта:

version: '3'

services:
  website-php-fpm:
    build:
      context: ./php-fpm
    volumes:
      - ../src:/var/www

  website-nginx:
    build:
      context: ./nginx
    volumes:
      - ../src:/var/www
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/sites/:/etc/nginx/sites-available
      - ./nginx/conf.d/:/etc/nginx/conf.d
    depends_on:
      - website-php-fpm
    expose:
      - 80
    container_name: websitecom
    environment:
      VIRTUAL_HOST: website.com

  website-database:
    image: mysql:5.7
    volumes:
      - ../../databases/websiteDB:/var/lib/mysql
    restart: always
    environment:
      - "MYSQL_ROOT_PASSWORD=superSecure"
      - "MYSQL_DATABASE=mydb"
      - "MYSQL_PASSWORD=mydbPass"
      - "MYSQL_USER=myDBuser"
    ports:
      - "33062:3306"

  website-phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - website-database
    ports:
      - '8182:80'
    restart: always
    environment:
      PMA_HOST: website-database
      PMA_PORT: 3306

networks:
  default:
    external:
      name: nginx-proxy

Докерфайл php-fpm:

FROM php:7.1.30-fpm
RUN docker-php-ext-install mysqli pdo pdo_mysql
CMD ["php-fpm"]

EXPOSE 9000

И (второй) nginx Dockerfile:

FROM nginx:alpine
RUN apk update && apk add bash
CMD ["nginx"]

EXPOSE 80 443

Итак, подводя итог, моя основная проблема заключается в том, что ./src (/var/www) недоступен для записи, хотя все файлы и папки имеют правильные разрешения, все они принадлежат root: root, а внутри контейнеров команда id возвращает тот же идентификатор, что и гостья. Пожалуйста, дайте мне ваши идеи, спасибо


1
666
1

Ответ:

Решено

Через два дня решение:

RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data

В php-докере.