首页 > 解决方案 > docker-compose / mysql:如何正确指定卷以使用现有数据库

问题描述

我想将现有的 mysql 数据库容器化,将容器内的数据目录链接到本地​​文件系统。

这个 docker run 命令工作正常,即数据库是可访问的并且数据是持久的。

docker run -v ./mydata:/var/lib/mysql mysql:5.7

但是,我无法使其与 docker-compose 一起使用。

我收到以下错误

[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 
...
Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

我的 docker-compose 文件如下所示:

version: "3.7"
  services:
  database  :
    restart: always
    image: mysql:5.7
    command: --port=4406
    volumes:
      - ./mydata:/var/lib/mysql

我的撰写文件有什么问题?

更新: mydata 的内容是

我也试过./mydata/mysql:/var/lib/mysql卷。这让我可以连接到数据库(例如通过 mysql 工作台),但是当我尝试查看用户时,我得到另一个错误(未找到 DESCRIBE mysql.db 文件)。

标签: mysqldockerdocker-compose

解决方案


推荐阅读