【问题标题】:docker container mariadb volumes码头集装箱 mariadb 卷
【发布时间】:2020-06-14 05:43:22
【问题描述】:

我有一个 MariaDB 容器来处理我的数据库。

这是我的问题,我执行:

docker-compose exec mariadb mysql -u root 

进入MariaDB容器并创建一个测试数据库,然后退出容器,并通过命令将其关闭:

docker-compose down 

之后,我通过命令重新启动所有容器

docker-compose up

回到 MariaDB 容器中,查看我添加的数据库是否持久,但我发现它没有。我以为我已经通过 docker-compose 中的这一行正确参数化了 MariaDB 卷:

- '/bitnami/mariadb/:/var/lib/mysql'

这是我完整的 docker-compose.yml 文件:

version: '2'
services:
 myapp:
  image: 'bitnami/symfony:1'
  ports:
    - '8000:8000'
  volumes:
    - '.:/app'
  environment:
    - SYMFONY_PROJECT_NAME=backend
    - MARIADB_HOST=mariadb
    - MARIADB_PORT_NUMBER=3306
    - MARIADB_USER=monty
    - MARIADB_PASSWORD=monty
    - MARIADB_DATABASE=test
  container_name: symfony_container
  depends_on:
    - mariadb
mariadb:
  image: 'bitnami/mariadb:10.3'
  ports:
    - '3306:3306'
  volumes:
    - '/bitnami/mariadb/:/var/lib/mysql'
  environment:
    - ALLOW_EMPTY_PASSWORD=yes
    - MARIADB_DATABASE=test
    - MARIADB_PORT_NUMBER=3306
    - MARIADB_ROOT_USER=root
    - MARIADB_USER=monty
    - MARIADB_PASSWORD=monty
  container_name: mariadb

如果有人有任何线索我会很高兴的。

【问题讨论】:

  • 您正在使用 docker 启动容器并使用 docker composer 停止?没有意义。您正在启动一个与您的 docker-compose 文件无关的容器,因此它不会附加卷
  • 好的,我应该怎么做?
  • docker-compose up,然后是docker-compose exec mariadb bash
  • 好的,我明白你的意思了,谢谢你的评论!尽管如此,它并没有解决我的数据持久性问题。
  • 我不确定 bitnami 使用什么图像,但如果 official mariadb image 不存在,它会自动创建 MYSQL_DATABASE。如果该 bitnami 映像不允许类似的行为,则可以将 exec 指向上述已运行的容器,或者在容器启动时运行一个脚本来检查状态并根据需要创建和/或填充数据库。

标签: mysql docker mariadb


【解决方案1】:

你的音量线颠倒了。

- '/bitnami/mariadb/:/var/lib/mysql'

这会将主机目录/bitnami/mariadb/ 挂载到容器内/var/lib/mysql。相反,你想要:

- '/var/lib/mysql/:/bitnami/mariadb/'

图片文档在这里指定了目标目录:https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#persisting-your-database

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2020-02-23
    • 2018-01-10
    相关资源
    最近更新 更多