php:7.4-apache
的码头形象。我发现我的应用程序不能写入Docker卷。
使用ls -l
,我发现我的卷的挂载点属于用户1451
:
drwxr-xr-x 4 1451 users 176128 Mar 12 13:25 volume_mountpoint
我的web服务器在用户www-data
下运行。
我尝试将容器运行的用户设置为www-data
。这导致卷挂载点归www-data
所有,后者解决了权限问题。此解决方案的问题是,Certbot
需要root
权限,并且在没有它的情况下无法获得HTTPs证书。
解决这个问题的正确方法是什么?我需要Certbot
在root下运行,但是让挂载点归www-data
所有。
发布于 2020-03-12 20:08:32
过去对我有用的解决方案:从现有映像中创建一个新映像,并让新映像的切入点脚本修改volume_mountpoint的权限。
因此,对于映像(php:7.4-apache),您可以创建entrypoint.sh文件,如下所示
chown www-data:www-data -R /path/to/volume_mountpoint
apache2-foreground
然后您的Dockerfile应该类似于
FROM php:7.4-apache
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
这样,当容器启动时,它应该更正权限。请注意,我还没有对上面的内容进行测试,可能需要一些调整--但希望它能显示出这个想法。
附注:也许有人有更好的方法-我自己也会很感兴趣的。
https://devops.stackexchange.com/questions/11065
复制