【发布时间】: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指向上述已运行的容器,或者在容器启动时运行一个脚本来检查状态并根据需要创建和/或填充数据库。