Mysql docker容器卷
我有一个MariaDB容器来处理我的数据库 这是我的问题,我执行: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
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。