Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql docker容器卷_Mysql_Docker_Mariadb - Fatal编程技术网

Mysql docker容器卷

Mysql docker容器卷,mysql,docker,mariadb,Mysql,Docker,Mariadb,我有一个MariaDB容器来处理我的数据库 这是我的问题,我执行: docker-compose exec mariadb mysql -u root 要进入MariaDB容器并创建测试数据库,然后退出容器,并通过以下命令将其关闭: docker-compose down 之后,我通过命令返回所有容器 docker-compose up 回到MariaDB容器中,查看我添加的数据库是否持久化,但我发现它没有。我认为我已经通过docker compose中的这一行正确地参数化了Maria

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

如果有人能帮我找到线索,我会很高兴的。

你的音量线颠倒了

- '/bitnami/mariadb/:/var/lib/mysql'
它将主机目录
/bitnami/mariadb/
装入容器中的
/var/lib/mysql
。相反,您希望:

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

图像文档在此处指定了目标目录:

您正在使用docker启动容器并使用docker composer停止?毫无意义。您正在启动一个与docker compose文件无关的contaner,因此它不会有卷附加DOK,我应该怎么做?
docker compose up
,然后
docker compose exec mariadb bash
好的,我明白您的意思了,谢谢您的评论!尽管如此,它并没有解决我在数据持久性方面的问题。我不确定bitnami使用了什么映像,但如果它不存在,它将自动创建
MYSQL\u数据库。如果该bitnami映像不允许类似的行为,请对已运行的容器执行所述的
exec
,或者在容器启动时运行脚本,检查状态并根据需要创建和/或填充db。