我的第一个带有 Docker 的 Laravel 开发环境的权限问题
Posted
技术标签:
【中文标题】我的第一个带有 Docker 的 Laravel 开发环境的权限问题【英文标题】:Permissions problem with my first Laravel dev environment with Docker 【发布时间】:2020-12-20 16:41:04 【问题描述】:我正在将我的开发环境从虚拟机(使用 Vagrant 和 VirtualBox)切换到使用 Docker 的容器。我成功地为 WordPress 设置了一个简单的开发环境,现在我正在尝试为 Laravel 做同样的事情。
我在 Windows 10 Pro 上,使用 WSL2(安装了 Ubuntu 20.04)。
如果我尝试在localhost:8088
(我的本地 Laravel 安装暴露的地方)上继续,我会得到:
UnexpectedValueException 无法以附加模式打开流或文件“/var/www/html/storage/logs/laravel.log”:无法打开流:权限被拒绝
这是我的docker-compose.yml
文件:
version: '3.3'
services:
nginx:
container_name: 'NGINX_Web_Server'
image: nginx:stable-alpine
depends_on:
- php
- mariadb
ports:
- 8088:80
volumes:
- ./root:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
container_name: 'PHP-FPM_7.4'
build:
context: .
dockerfile: Dockerfile
volumes:
- ./root:/var/www/html
ports:
- 9090:9000
mariadb:
container_name: 'MariaDB_SQL_Server'
image: mariadb
restart: unless-stopped
tty: true
volumes:
- ./mariadb_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
MYSQL_USER: ll_user
MYSQL_PASSWORD: ll_password
这是docker-compose.yml
中指示的Dockerfile
:
FROM php:fpm-alpine3.12
RUN docker-php-ext-install pdo pdo_mysql
#RUN chown -R www-data:www-data /var/www
还有 nginx 的 default.conf
文件:
server
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
location /
try_files $uri $uri/ /index.php?$query_string;
location ~ \.php$
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
怎么了?
【问题讨论】:
【参考方案1】:可以解决:
chown -R www-data:www-data /var/www
chmod -R 755 /var/www/storage
如果它不适合您,请在容器中尝试:
检查:docker-compose exec php ls -al /var/www/storage
我看到的是xfs
而不是www-data
运行:docker-compose exec php chown -R $USER:www-data /var/www/storage
运行:docker-compose exec php chown -R $USER:www-data /var/www/bootstrap/cache
再试一次,它必须工作
【讨论】:
以上是关于我的第一个带有 Docker 的 Laravel 开发环境的权限问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Cloud 中使用 Laravel 8 的 Docker 容器的 503“服务不可用”
在 mcrypt 扩展上使用 GitlabCI 部署 Laravel 失败