【发布时间】:2021-08-21 19:56:12
【问题描述】:
我已经从这篇文章中看到了解决方案:"https://stackoverflow.com/questions/50552970/laravel-docker-the-stream-or-file-var-www-html-storage-logs-laravel-log-co
但是这个解决方案还不够
问题是,如果我按照解决方案中的说明进行操作,即在 Docker 容器中运行 chown -R www-data:www-data * - 它还会更改 Ubuntu 主机中实际文件夹的权限,而不仅仅是容器,因为我设置了docker-compose.yml 文件中的这个文件夹:
php:
build:
context: ./laravel
dockerfile: Dockerfile
container_name: laravel
volumes:
- ./laravel:/var/www/html
这是Dockerfile:
FROM php:fpm-alpine
RUN docker-php-ext-install pdo pdo_mysql
而我在 Ubuntu 主机上的用户是 myuser,所以当我运行 chown -R www-data:www-data * 时,myuser 不再拥有主机上的权限,并且我无法保存文件。
所以我要么在localhost URL 上获得权限被拒绝(如在另一篇文章中所见),要么我在我的 Ubuntu 主机上的 VS Code 上保存文件的权限被拒绝! (我使用的是 WSL2,所以我可以使用 VS Code)
总结一下:
- 为了能够在我挂载的卷上保存文件,我必须将它保存为 Ubuntu 用户,即
myuser,所以我必须运行sudo chown -R myuser ~/myproject - 但由于 Laravel 中的某些文件需要
www-data的可写权限,我无法访问我的网站localhost- 如上面的帖子所示。 - 如果我在 Docker 容器中使用
chown -R www-data:www-data /var/www/更改权限,我会失去主机中的myuser权限并且无法再次保存文件,反之亦然。
【问题讨论】:
-
Dockerfile的基本映像是什么? -
php-fpm,也编辑了帖子