我们有一个将MySQL作为数据库的Rails应用程序。 dbdocker-compose.yml部分看起来像

  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-dump。

问题是,每次运行docker-compose up时,我们都需要加载正确的转储。 MySQL docker镜像以这种方式工作,它将数据存储在主机上,因此您的db-service不是无状态的。

我们需要的db服务放弃了在docker-compose up之前运行的所有更改,并从该确切转储重新开始。

最佳答案

解决了

实际上,以上观点使我对RTM有一些见解,

  • 获取您自己的MySQL Dockerfile
  • 从其中删除VOLUME行,其中
    它提到/var/lib/mysql应该安装在主机上。
  • docker-compose up --force-recreate db
  • 10-01 18:25
    查看更多