如何在保持权限的同时在Docker容器中共享Laravel应用程序代码库?

我创build了一个dockerfile来容纳我的Laravel应用程序用于本地开发环境。

到目前为止,我已经实现了我所需要的大部分function,但是,每一个命令都会进入容器(比如composer install等等)将会改变我的代码库文件和容器root的UID,并在主机上产生权限冲突。

到目前为止,这是我的dockerfile

https://github.com/timegridio/dockerfiles和我的项目代码库 (在需要的情况下)。

在我的研究中,我已经尝试了一些关于这个问题的提示和本文的build议 ,我认为这些build议与我所需要的非常接近。 然而,我没有成功的这些aproaches,并得到了错误(请参阅问题的意见 ,我粘贴的产出,但我不想在这个问题上混合这个方法呢)。

谢谢你的时间!

在构build过程中(在Dockerfile中)所做的一切都不会改变主机中的内容。 只有在docker exec了什么之后才会发生什么,或者是应用程序本身会改变你的文件。 所以当你执行你的容器时,请指定你的主机UID和GID:

 docker run -p 8000:8000 -v ~/timegrid/:/var/www/timegrid -u=<UID> -g=<GID> timegrid:latest 

一切都将为这些ID做。 如果您的应用程序行为不好,可能需要在创build目录之前在Dockerfile中指定USER指令。

主机装入的卷总是复杂的,许可的事情让我们总是头疼。 您可以使用与您的主机用户相同的id来定义一个用户,但是您的Dockerfile只能为您工作。 如果你这样决定,你可以使用AUX指令来指定ID。

问候