docker-compose:每次都重新初始化 MySQL db
docker-compose: reinitializing MySQL db every time
我们有一个 Rails 应用程序,其中 MySQL 作为数据库。 docker-compose.yml
的 db
部分看起来像
db:
image: mysql
env_file:
- ma.env
volumes:
- ./dump-db:/docker-entrypoint-initdb.d
- ./my.cnf:/etc/mysql/my.cnf
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_HOST=
在 ./dump-db
文件夹下实际上有一个 sql-我们数据库的转储。
问题是,每次 docker-compose up
为 运行 时,我们都需要加载准确的转储。 MySQL docker 图像以这样的方式工作,它将数据存储在主机上,因此您的数据库服务不是无状态的。
我们需要的 是 db
服务放弃了 docker-compose up
之前 运行 内所做的所有更改,并重新启动了那个确切的转储.
如果您不想在每次执行 docker-compose up
时都保留数据,您必须删除通过执行此命令创建的卷。
要实现这一点,您可以执行以下命令,这将删除 db
服务以及 volumes
部分中声明的卷。
docker-compose down -v db
已解决
实际上,上面的想法让我对 RTM 有了一些了解,这里是
- 获取您自己的 MySQL Dockerfile
- 从中删除 VOLUME 行,其中
它提到
/var/lib/mysql
应该安装在主机上。
docker-compose up --force-recreate db
我们有一个 Rails 应用程序,其中 MySQL 作为数据库。 docker-compose.yml
的 db
部分看起来像
db:
image: mysql
env_file:
- ma.env
volumes:
- ./dump-db:/docker-entrypoint-initdb.d
- ./my.cnf:/etc/mysql/my.cnf
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_HOST=
在 ./dump-db
文件夹下实际上有一个 sql-我们数据库的转储。
问题是,每次 docker-compose up
为 运行 时,我们都需要加载准确的转储。 MySQL docker 图像以这样的方式工作,它将数据存储在主机上,因此您的数据库服务不是无状态的。
我们需要的 是 db
服务放弃了 docker-compose up
之前 运行 内所做的所有更改,并重新启动了那个确切的转储.
如果您不想在每次执行 docker-compose up
时都保留数据,您必须删除通过执行此命令创建的卷。
要实现这一点,您可以执行以下命令,这将删除 db
服务以及 volumes
部分中声明的卷。
docker-compose down -v db
已解决
实际上,上面的想法让我对 RTM 有了一些了解,这里是
- 获取您自己的 MySQL Dockerfile
- 从中删除 VOLUME 行,其中
它提到
/var/lib/mysql
应该安装在主机上。 docker-compose up --force-recreate db