我是新来码头的。我正在尝试从传统的VM设置切换到我管理的一系列网站的dockerized设置。我尝试过Docker Compose和Wordpress,这是我的docker-compose.yml文件:
version: "3"
services:
blog2:
image: wordpress:4.9.6-apache
volumes:
- blog2:/var/www/html
environment:
WORDPRESS_DB_PASSWORD:
depends_on:
- mysql
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD:
volumes:
blog2:
它可以工作,并创建一个我可以从/var/lib/docker/volumes/blog2
访问的主文件系统上的blog2
卷。我还可以连接SFTP和编辑文件,一切工作。/var/www/html
目录中的文件归www-data用户所有。如果我编辑它们,这是可以的,但如果我添加一个新文件...它归我在服务器上使用的用户所有(在我的测试用例中,它是root用户,但也可以是任何其他用户)。因此,如果www服务器需要编辑或删除它们,它们不能被www-data修改。
我如何解决这个问题?我的想法是在每个Docker容器中添加一个用户,将他添加到www-data组中,并将整个/var/www/html更改为该用户,这样,初始和未来的文件都可以是red或由两者写入,无论它们是由www-data还是该用户创建的。
它能工作吗?在创建容器时执行docker-compose up -d
时,是否可以将其写在docker-compose.yml文件中进行设置?:)
提前谢谢你。
发布于 2018-05-28 18:30:52
您的问题的一个解决方案是使用不同的用户启动wordpress容器。在以任意用户身份在dockerhub page for the wordpress image上运行中记录了这一点。
在docker组合文件中,您可以设置将在容器中运行的用户。例如,您可以指定用户1000,它将映射到计算机上的用户1000。因此,您可以找到用户www-data
的uid,并使用该uid启动容器:
...
services:
blog2:
image: wordpress:4.9.6-apache
user: 1000:1000
volumes:
- blog2:/var/www/html
environment:
WORDPRESS_DB_PASSWORD:
depends_on:
- mysql
...
https://stackoverflow.com/questions/50563110
复制相似问题