为何Docker容器将用户暴露给主机?

时间:2018-09-24 11:20:56

标签: laravel docker nginx permissions file-permissions

简而言之:

我能够将Docker容器中的nginx用户-www-data:www-data设置为主机上文件夹的所有者。为什么这项工作?

长版:

我已经在阅读本教程Laravel development with docker的过程中为本地Laravel开发创建了一个安装程序,最后得到了以下文件结构:

Docker撰写:

version: '2'
services:
    web:
        build:
            context: ./
            dockerfile: deploy/web.docker
        volumes:
            - ./:/var/www
        ports:
            - "8080:80"
        links:
            - app
    app:
        build:
            context: ./
            dockerfile: deploy/app.docker
        volumes:
            - ./:/var/www
        links:
            - database
            - cache
        environment:
            - "DB_PORT=3306"
            - "DB_HOST=database"
            - "REDIS_PORT=6379"
            - "REDIS_HOST=cache"
    database:
        image: mysql:5.6
        environment:
            - "MYSQL_ROOT_PASSWORD=secret"
            - "MYSQL_DATABASE=dockerApp"
        ports:
            - "33061:3306"
    cache:
        image: redis:3.0
        ports:
            - "63791:6379"

部署/app.docker:

FROM php:7-fpm

WORKDIR /var/www

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install pdo_mysql

部署/web.docker:

FROM nginx:1.10

ADD ./deploy/vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www

当我做一个docker-compose up时,遇到并出错,因为访问被拒绝,它无法访问storage/logs/laravel.log。然后,我确实在主机上将所有者更改为www-data:www-data,但问题却消失了,但实际上我不明白为什么要这样做?我的主机上没有Nginx,这意味着我的主机可以使用容器中的Nginx用户吗?

0 个答案:

没有答案