首页 > 解决方案 > Docker-compose 权限错误,chown 不起作用

问题描述

尝试用redis、mysql和mongodb设置一个laravel项目。使用 docker-compose 设置 docker 容器,但是 127.0.0.1 throws The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied。Chown'ing 目录,但“app”容器内 /var/www/html 的所有者是 root,而不是 www-data。我该如何解决?

Dockerfile

ARG PHP_VERSION
FROM php:7-fpm-alpine
ARG APP_ENV
ARG REMOTE_WORKING_DIR
RUN apk update && apk add --no-cache $PHPIZE_DEPS \
   build-base shadow nano curl gcc git bash \
   php7 \
   ...installing dependencies...
...redis & mongodb...
...php settings...
...installing composer...
RUN rm -rf /var/cache/apk/*
RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data
COPY . $REMOTE_WORKING_DIR
RUN sudo chown -R www-data:www-data $REMOTE_WORKING_DIR
USER www-data
EXPOSE 9000
CMD ["php-fpm"]

码头工人-compose.yml

version: "3"
services:
 app:
   build:
     context: ./docker/php
     args:
       APP_ENV: ${APP_ENV}
       PHP_VERSION: ${PHP_VERSION}
       REMOTE_WORKING_DIR: ${REMOTE_WORKING_DIR}
   container_name: app
   restart: always
   env_file: .env
   ports:
     ...
   links:
     - redis
   networks:
     ...
   volumes:
     - ${LOCAL_WORKING_DIR}:${REMOTE_WORKING_DIR}
     - ./docker/php/config/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini

 nginx:
   ...
   volumes:
     - ${LOCAL_WORKING_DIR}:${REMOTE_WORKING_DIR}
     - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
     - ./docker/nginx/conf.d/:/etc/nginx/conf.d/
     - ./docker/nginx/ssl/:/etc/nginx/ssl/
   ports:
     ...
   depends_on:
     - app
   networks:
     ...

 redis:
 ...

networks:
...

标签: phplaraveldockernginxdevops

解决方案


推荐阅读