Docker(撰写)挂载卷不可写

时间:2019-07-26 09:43:16

标签: docker nginx docker-compose

我正在使用docker compose创建一个nginx代理,然后再次使用docker compose将多个网站附加到它。 除了所有文件夹不可写之外,其他所有内容似乎都正常运行。在此示例中,我将使用Joomla网站,但对于所有网站都是如此。我正在使用root用户(Ubuntu Server 18.04),文件的所有者是root。同样,在主机上和容器中都运行“ id”似乎返回0,这是我的root用户。我对如何使其工作感到困惑。 因此,首先,这里是代理:

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 Dockerfile:

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命令返回的容器内与主机相同的ID。 请给我您的见解,谢谢

1 个答案:

答案 0 :(得分:0)

两天后,解决方案是:

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

在php Docker中。