我正在使用 docker-compose v 1.27 和 Docker v 19.03。我的 docker-compose.yml 文件中有这个...
version: '3'
services:
mysql:
restart: always
image: mysql:8.0
cap_add:
- SYS_NICE # CAP_SYS_NICE
environment:
MYSQL_DATABASE: 'directory_data'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'root'
# You can use whatever password you like
MYSQL_PASSWORD: 'password'
# Password for root access
MYSQL_ROOT_PASSWORD: 'password'
MYSQL_ROOT_HOST: '%'
ports:
- "3406:3306"
volumes:
- my-db:/var/lib/mysql
- ./mysql/mysqlconf:/etc/mysql/conf.d
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
请注意,我没有 Dockerfile(认为我不需要它)。我的“my.cnf”文件在下面davea$ cat mysql/mysqlconf/my.cnf
bind-address = 0.0.0.0
在 Docker 中,如何将 my.cnf 文件的权限设置为只读?这在 Windows 10 上发挥作用,其中运行“docker-compose up”会导致此警告mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.
请注意,这个答案 - https://stackoverflow.com/questions/64327260/in-docker-compose-how-do-i-set-perms-on-a-my-cnf-file-if-i-dont-have-a-dockerf 并没有削减它,因为它依赖于设置 th
最佳答案
我认为这里的潜在问题是您正在 ext 文件系统内安装 NTFS 目录卷。以下是一些可能有帮助的可能解决方案。
Docker 级别:使用只读卷挂载
您可以使用 read-only volume mount 代替默认的读写设置。
例如,将 :ro
(只读)添加到卷规范的末尾:
volumes:
- ...
- ./mysql/mysqlconf:/etc/mysql/conf.d:ro
容器级:
chmod
配置文件如果要抑制警告,可以尝试通过将
command
配置扩展为多个命令,在运行时将文件的权限设置为只读。不过,我认为这就是您所说的客户端操作系统级别。安装不会是只读的。例如:
command: bash -c "
chmod -R 0444 /etc/mysql/conf.d/ &&
mysqld --user=root --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
"
请注意,这与只读挂载不兼容,因为您无法调整权限,因为它是只读文件系统。
关于mysql - 如何将 my.cnf 文件的权限设置为 Docker 中的只读(而不是客户端的操作系统级别)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64379031/