mysql - 如何将 my.cnf 文件的权限设置为 Docker 中的只读(而不是客户端的操作系统级别)?

标签 mysql docker docker-compose permissions my.cnf

我正在使用 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/

相关文章:

php - 如何在索引上仅显示 1 行

php - 从两个表中获取信息

python - Dockerfile指定API的路径

amazon-web-services - 使用 Dockerrun.aws.json 通过 CLI deploy 命令部署到 elasticbeanstalk

windows - Windows中Rabbitmq Docker容器的正确路径

php - Laravel Eloquent 检查日期是否与数据库中的日期不相等

mysql - 带子查询的 select 内的 where 子句

docker - 当我们运行该镜像时如何从 docker 镜像运行 shell 脚本

docker - Docker InfluxDB在UTC时区运行

docker - 我的docker-compose无法正常工作,并向我显示 “pkg_resources.VersionConflict…”