Docker容器中使用Mariadb卷。

5

我有一个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

如果有任何关于IT技术的线索,请不吝赐教。


你正在使用Docker启动容器,然后用Docker Compose停止它?这没有任何意义。你正在启动一个与你的docker-compose文件无关的容器,因此它将不会有任何附加的卷。 - Elias Soares
好的,那我应该做什么呢? - brn
docker-compose up, then docker-compose exec mariadb bash - Elias Soares
好的,我明白你的意思了,感谢你的评论!不过,它并没有解决我的数据持久化问题。 - brn
我不确定bitnami使用的是什么镜像,但是官方mariadb镜像会自动创建MYSQL_DATABASE如果它不存在。如果那个bitnami镜像不允许类似的行为,可以像上面提到的那样exec到已经运行的容器中,或者在容器启动时运行一个脚本来检查状态并根据需要创建和/或填充数据库。 - ldg
1个回答

5

这是一个更新的链接:https://github.com/gct-faisal/bitnami-docker-mariadb#persisting-your-database - Motonari
@Motonari,那是一个非常陈旧的Docker仓库个人克隆。我已经更新了新链接。 - BMitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接