建立于: 6年前 ( 更新: 6年前 )
前言
CCC网站升级php 7.2.0罗,有Docker的环境,轻松搞定php升级,
在Linux上Image的变更还是有些注意事项您应该了解。
如果您跟我一样透过docker将D-Laravel安装於Linux的系统上,当您变更不同的image时,
或许您可能会碰到,疑!怎么composer没有权限写数据夹的错误。
directory is not writable
在Linux上Image的变更还是有些注意事项您应该了解。
如果您跟我一样透过docker将D-Laravel安装於Linux的系统上,当您变更不同的image时,
或许您可能会碰到,疑!怎么composer没有权限写数据夹的错误。
directory is not writable
说明
在Linux的环境上,D-Laravel内建image的使用者并非root,默认的uid及gid为1000,
他极有可能与您Linux上所运行的使用者uid及gid是不同,您可以输入id查看。
如果您Linux上的使用者uid及gid刚好为1000,那基本上运行D-Laravel不会有任何问题。
但是当您的情况与我相同时,uid及gid并非1000,这会造成您Linux上使用者运行composer时,
无权限写dlaravel家目录的情况,当您输入composer update时,
会看见如下的错误: OK,这是正常现象,不要太警张。
修正的方式非常简单,说穿了就是变更dlaravel的uid及gid与您运行的Linux使用者的uid及gid相同即可。
如果您对Linux命令或Docker不熟,又或者您对Linux命令相当熟悉,只不过懒的调整。
D-Laravel开发目标,就是要让不懂Docker或懂Docker的人,可以使用最简单的方式搞定环境,
当然D-Laravel,已提供转换的bash罗。
他极有可能与您Linux上所运行的使用者uid及gid是不同,您可以输入id查看。
如果您Linux上的使用者uid及gid刚好为1000,那基本上运行D-Laravel不会有任何问题。
但是当您的情况与我相同时,uid及gid并非1000,这会造成您Linux上使用者运行composer时,
无权限写dlaravel家目录的情况,当您输入composer update时,
会看见如下的错误: OK,这是正常现象,不要太警张。
修正的方式非常简单,说穿了就是变更dlaravel的uid及gid与您运行的Linux使用者的uid及gid相同即可。
如果您对Linux命令或Docker不熟,又或者您对Linux命令相当熟悉,只不过懒的调整。
D-Laravel开发目标,就是要让不懂Docker或懂Docker的人,可以使用最简单的方式搞定环境,
当然D-Laravel,已提供转换的bash罗。
D-Laravel的修正方式:
我们可以使用D-Laravel提供的
这里我采用了一种非常粗暴而直接的方式,就是直接砍掉container内的dlaravel使用者,
然后再依运行
创建相同的dlaravel使用者在container内,然后变更dlaravel家目录的权限。
够粗暴吧,不过这确实有效的。
最新版的D-Laravel已不使用这种粗暴的方式变更使用者的uid及gid了,有更好的方式。
https://www.ccc.tc/article/dlaravel-release-v1.5.5
当我们透过
我们需要将变更,写数据写到所使用的deivny/fpm的image中,
由於呢docker-compose环境,运行down时,container会被移除,
所以我们必需将container的变更存入image的样版,
这样下次启动生成对运行container才会是我们变更过的环境。
在这例子中,我使用的为php 7.2.0版,所以找出fpm的CONTAINER ID。
然后进行commit及重启。
完成后,进入container内,再来跑看看
您可以看见,变更权限后可以正常更新罗,composer不会再抱怨没权写加目录了。
如果您对於D-Laravel使用上有什么疑问,欢迎到聊天室评论哦。
./console chowner
方式,轻松调整。./console chowner
是怎么辨到的呢,然后再依运行
./console chowner
的使用者id及gid,创建相同的dlaravel使用者在container内,然后变更dlaravel家目录的权限。
够粗暴吧,不过这确实有效的。
最新版的D-Laravel已不使用这种粗暴的方式变更使用者的uid及gid了,有更好的方式。
https://www.ccc.tc/article/dlaravel-release-v1.5.5
当我们透过
./console chowner
重建了container内的dlaravel使用者后,我们需要将变更,写数据写到所使用的deivny/fpm的image中,
由於呢docker-compose环境,运行down时,container会被移除,
所以我们必需将container的变更存入image的样版,
这样下次启动生成对运行container才会是我们变更过的环境。
在这例子中,我使用的为php 7.2.0版,所以找出fpm的CONTAINER ID。
然后进行commit及重启。
完成后,进入container内,再来跑看看
composer update
。您可以看见,变更权限后可以正常更新罗,composer不会再抱怨没权写加目录了。
如果您对於D-Laravel使用上有什么疑问,欢迎到聊天室评论哦。
No Comment
Post your comment