docker mysql持久存储

我有这个应用程序试图编排使用docker+无花果,这是伟大的第一天的尝试。 它使用一个数据容器,我想要保存我的数据库文件和应用程序使用的redis + mysql容器。

一旦启动,mysql容器在/var/lib/mysql查找数据文件,如果没有find,它会创build默认的sb,然后我可以填充并创build文件,并且保存在我的数据卷中。

虽然我正在学习无花果,我不得不做一个fig rm --force mysql删除我的MySQL容器的MySQL。 我这样做没有恐惧知道我的数据在数据容器上是安全的。 在我的主机上运行ls显示mysql文件仍然完好无损。

当我再次运行fig up再次创buildmysql容器时,就会出现问题。 即使我有相同的卷共享,我的旧的mysql文件仍然存在,这个新的容器创build一个新的数据库,就好像共享卷是空的。 这只发生在如果我rm的容器,而不是如果我closures无花果,把它带回来。

这是我的无花果文件,如果有帮助:

data: image: ubuntu:12.04 volumes: - /data/mysql:/var/lib/mysql redis: image: redis:latest mysql: image: mysql:latest ports: - 3306 environment: MYSQL_DATABASE: ***** MYSQL_ROOT_PASSWORD: ***** volumes_from: - data web: build: . dns: 8.8.8.8 command: python manage.py runserver 0.0.0.0:8000 environment: - DEBUG=True - PYTHONUNBUFFERED=1 volumes: - .:/code ports: - "8000:8000" links: - data - mysql - redis

任何想法,为什么新的MySQL容器将不会使用现有的文件。

我没有使用fig但将进行调查,因为在您的文章简单的语法看起来相当不错。 我每天花更多的时间来扩展我对Docker的知识,并将我的大脑重新连接起来。 现在,我已经为我的MySQL实例运行了一个无状态的数据容器。 这一直很好,没有问题。

如果容器启动时/var/lib/mysql中的内容不存在,则脚本将安装所需的数据库文件。 脚本检查是否存在初始数据库文件,而不仅仅是/var/lib/mysqlpath。

 if [[ ! -f $VOLUME_HOME/ibdata1 ]]; then echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME" echo "=> Installing MySQL ..." else echo "=> Using an existing volume of MySQL" fi 

这里是直接链接到我正在继续增强的MySQL回购

这似乎是一个错误,请参阅此相关的问题,其中有相关的无花果/docker问题的链接: https : //stackoverflow.com/a/27562669/204706

Docker 1.4.1显然情况有所改善,所以你应该尝试使用该版本,如果你还没有。