这是我的docker组成文件,我有两个已装入的卷,每个卷都需要不同的用户和组所有者
version: '3'
services:
mysql:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
container_name: mysql
restart: unless-stopped
ports:
- 3306:3306
user: ${USER_ID}:${GROUP_ID}
volumes:
- "./storage/etc/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf"
- "./storage/var/log/mysql:/var/log/mysql"
phpmyadmin:
image: phpmyadmin:5.1.1
container_name: phpmyadmin
restart: always
ports:
- 8080:80
如果我应用这个docker compose,所有这些卷都将具有类似的用户和组所有者
我希望有一个选项可以为每个卷指定一个用户所有者
Docker和Compose都没有任何选项来更改卷中文件的所有权或绑定已安装目录。
您可以将一个文件和一个目录装载到mysql
容器中。它们在主机上都有数字用户和组所有者。这些数字ID可能存在于容器的/etc/passwd
文件中,也可能不存在,但通常无关紧要。Docker无法更改文件所有权,除非您的容器以root身份运行,并在启动序列中运行chown(1(。
如果这两种东西的所有权不同,在启动容器之前,您可能需要在主机上更改这一点
sudo chown -R "${USER_ID}" ./storage
在实践中,根据您所展示的内容,只要mysqld.cnf
文件是可读的,并且容器以$USER_ID
作为日志目录的所有者运行,容器就可能成功运行。