mariadb 作为 docker 容器 - 主机挂载绑定上的启动损坏

mariadb as docker container - corrupted startup on host mount binding

我想 运行 最新的 mariadb:10.4.8 作为 docker 容器,其数据文件夹作为主机挂载。

这是我的docker-compose.yaml

database:
mem_limit: 1073741824
image: mariadb:stable
environment:
  MYSQL_DATABASE: mydata
  MYSQL_PASSWORD: '123456'
  MYSQL_ROOT_PASSWORD: '12345678'
  MYSQL_USER: mydata
  MYSQL_ROOT_HOST: '%'
stdin_open: true
volumes:
- /opt/mydata/keys/keyfile.key:/etc/mysql/encryption/keyfile.key
- /opt/mydata/keys/keyfile.enc:/etc/mysql/encryption/keyfile.enc
- /opt/mydata/database:/var/lib/mysql
- /opt/mydata/logs:/var/log/mysql
tty: true
cpu_shares: 512
command:
- --max-allowed-packet=100M
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --net-write-timeout=300
- --net-read-timeout=300
- --log-error=/var/log/mysql/mysql-error.log
- --plugin-load-add=file_key_management
- --file-key-management-filename=/etc/mysql/encryption/keyfile.enc
- --file-key-management-filekey=FILE:/etc/mysql/encryption/keyfile.key
- --file-key-management-encryption-algorithm=AES_CTR
- --innodb-encrypt-log=ON
- --innodb-encrypt-tables=FORCE
labels:
  io.rancher.container.pull_image: always

问题是 'mydata' 用户不再创建 - 我无法以 root 或 mydata 身份登录。 我在“/opt/mydata/database”下没有看到任何 'mydata' 文件夹。 与 phpmadmin 的连接导致:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

似乎如果这个任务第一次成功 - 不会出现问题,但如果没有,我可以随心所欲地尝试 - 它不会起作用。

当我启动此服务时 - 第一个 mariadb 容器突然停止运行,然后另一个容器启动。

这 运行 在完全更新的 Ubuntu 18.04.3 LTS 主机上。

设置几乎每次都相同,因为我们的容器等已针对 Rancher Container Orchestrtion 提供了 terraform。

我尝试了不同的 docker 版本 18.06 和 18.09 CE。

我现在缺乏想法,有什么想法吗?

看完 "github.com/docker-library/mariadb/issues/262" 我降级到 10.3.16。 创建新的 mariadb 可以可靠地使用该版本。 10.3.17、10.3.18 和 10.4.8 存在上述所有问题。