php 在Laravel tinker中使用docker-compose时无法写入'psysh'目录

pxq42qpu  于 2023-01-24  发布在  PHP
关注(0)|答案(1)|浏览(121)

我有一个容器化的Laravel应用。我的所有容器都在运行。当我运行命令docker-compose exec app php artisan tinker时,我收到错误

ErrorException 

  Writing to directory /home/darula/.config/psysh is not allowed.

其他artisan命令(如docker compose exec app php artisan migrate)也能正常工作。
我尝试将目录的所有权更改为当前所有者。还尝试将.config目录的权限更改为755。当我在没有docker-compose的情况下运行php artisan tinker时,命令只运行文件。当我在非容器化应用程序中运行php artisan tinker时,它也能正常工作。
为了在容器化应用上运行tinker,我需要做什么?

nuypyhwy

nuypyhwy1#

在为我的项目创建了一个定制的Docker之后,我遇到了同样的错误。
不知道这是否是你的情况,但在评论中,它说docker需要一个有效的用户才能运行。
要进行检查,只需连接运行laravel应用程序的docker shell,看看“用户”是否显示为没有名称。
如果它没有一个“名称”,你只需要修改你的Dockerfile脚本添加一个用户。

# Variables to configure user and permissions
ARG WWWUSER=www
ARG WWWGROUP=www
ARG UID=1000
ARG GID=1000

# Add user for laravel application
RUN groupadd -g ${GID} ${WWWGROUP}
RUN useradd -u ${UID} -ms /bin/bash -g ${WWWGROUP} ${WWWUSER}

USER ${WWWUSER}

您可以在docker-compose.yml中将参数作为变量传递(通常UID和GID为1000),以确认您可以运行:

id -u # To check your user ID

以及

id -g # To check your group

WWWUSER和WWWGROUP只是一个内部运行系统的用户,就像sail一样。
重建你的容器并启动它。在我的例子中它修复了。

相关问题