向 Docker 数据库添加卷会破坏容器

向 Docker 数据库添加卷会破坏容器

全部

我已经使用 Docker LEMP 堆栈工作了一段时间,到目前为止,还没有使用过 MySQL 部分。今天,当我向 Compose 文件添加卷时,似乎破坏了容器。

如果没有附加卷,容器将按预期运行。但是,当您将卷添加到堆栈时,任务会被反复拒绝。由于容器会自动删除并重新创建,因此我无法提取任何日志。以下是 LEMP 堆栈的 MySQL 部分...

mysql:
  image: 'mariadb'
  ports:
    - '3306:3306'
  volumes:
    - /mnt/sdb/Containers_Common/WWW/MySQL:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD={INSERT DB PASSWORD}

提供背景信息:挂载点是使用 fstab 在所有节点上建立的网络共享。为了进行测试,权限已设置为 777。

这里我遗漏了什么吗?也许还需要安装 MySQL 套接字?

在堆栈外运行容器以查看日志而不会销毁它们,产生了以下结果:

2019-06-07T11:45:34.286323Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-06-07T11:45:34.286835Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.16) initializing of server in progress as process 30
2019-06-07T11:45:34.293509Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2019-06-07T11:45:34.293532Z 0 [ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it.
2019-06-07T11:45:34.293727Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-06-07T11:45:34.305548Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.16)  MySQL Community Server - GPL.
6:45 root@Docker01 /mnt/sdb/Containers_Common/WWW/MySQL

答案1

尽管具有 777 权限,MySQL 服务器也不会绑定到目录,除非所有者也更改为 mysql:mysql

答案2

我发现了一些有趣的东西:您的文件所在的目录docker-compose.yml,或者您Dockerfile必须与您的卷分开,如下所示:

  • Dockerfile 或 docker-compose.yml 路径:/path/my_sql/docker-compose.yml
  • 用于 mysql 的卷:(/path/mysql/data其中数据是目录)

相关内容