我尝试在docker容器中运行wordpress我的docker-compose.yaml
文件是:
version: "2"
services:
my-wpdb:
image: mariadb
ports:
- "8081:3306"
environment:
MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
my-wp:
image: wordpress
volumes:
- ./:/var/www/html
ports:
- "8080:80"
links:
- my-wpdb:mysql
environment:
WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
当我构建docker结构时,该卷已安装但属于根目录。
我试图用以下方法来改变它:
my-wp:
image: wordpress
user: 1000:1000 # added
volumes:
- ./:/var/www/html
ports:
- "8080:80"
links:
- my-wpdb:mysql
environment:
WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
现在,我可以编辑文件了。但随后,该容器不再为网站提供服务。
解决此权限问题的正确方法是什么?
根据docker-compose和docker run参考,该user
选项设置在容器中运行的进程的用户ID(和组ID)。如果将此设置为1000:1000
,则您的网络服务器将不再能够绑定到端口80。绑定到1024以下的端口需要root权限。这意味着您应该user: 1000:1000
再次删除添加的语句。
要解决共享卷的权限问题,您需要更改目录的所有权。运行chown 1000:1000 /path/to/volume
。这可以在容器内部执行,也可以直接在主机系统上执行。更改是持久且立即生效的(无需重新启动容器)。
通常,我认为该卷应位于子目录中,例如
volumes:
- ./public:/var/www/html
确保正确的用户拥有./public
。如果您启动容器,但目录不存在,则docker会为您创建它。在这种情况下,该目录归所有者所有root
,您需要如上所述手动更改所有权。
或者,您可以以非特权用户(user: 1000:1000
)的身份运行Web服务器,让服务器侦听端口8080并将路由更改为
ports:
- "8080:8080"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句