docker-compose:每次都重新初始化 MySQL db

docker-compose: reinitializing MySQL db every time

我们有一个 Rails 应用程序,其中 MySQL 作为数据库。 docker-compose.ymldb 部分看起来像

  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