使用Docker为开发环境设置MySQL
尝试设置一个docker mysql服务器与phpmyadmin和一个现有的company_dev.sql文件导入,努力dockerize我的开发环境。
我的第一个问题是我怎么去设置呢? 我需要指定一个操作系统,例如在我的Dockerfile中的Ubuntu,然后添加sudo apt-get install mysql-server并安装phpmyadmin? 或者,我最好从Docker仓库运行一个现有的docker图像,并build立它?
在对这个数据库进行CRUD操作时,我想保存它的状态以备后用。 将使用docker提交适合这个用例? 我知道使用dockerfile是最佳实践。
我感谢任何build议。
首先,在Docker中,每个容器应该有一个服务/守护程序。 在你的情况下,MySQL和phpmyadmin应该在不同的容器。 这不是强制性的(有解决方法),但使事情变得更容易。
为了避免重蹈覆辙,恕我直言,恕我直言,总是使用现有的图像为通缉的服务,特别是如果他们是官方的。 但是,再次,您可以select任何理由从头开始(像“Ubuntu”或“Debian”这样的基本映像,只是两个名称),并安装所需的东西。
关于存储问题:docker容器应该永远是不可变的。 如果一个容器需要保存它的状态,它应该使用volumes
。 卷是在容器和主机之间共享文件夹的一种方式。 例如,官方的mysql映像使用卷来存储数据库文件。
所以,总结一下,你应该尽可能使用准备好的映像,否则,使用git commit来存储mysql数据不是一个好的做法。
以前我用这个Dockerfile来恢复MySQL数据。
- GitHub – stormcat24 / docker-mysql-remote
我的第一个问题是我怎么去设置呢?
这个dockerfile使用mysqldump
从真正的env / save加载到docker env。 你也可以做到这一点。 实际上,它会加载/保存整个表在指定的数据库。
我需要指定一个操作系统,例如在我的Dockerfile中的Ubuntu,然后添加sudo apt-get install mysql-server并安装phpmyadmin?
你可以看到这个Docker镜像是从DockerHub – library / mysql创build的,我们不需要准备除phpmyadmin之外的基本中间件。
或者,我最好从Docker仓库运行一个现有的docker图像,并build立它?
最好使用已经存在的Docker仓库!
在对这个数据库进行CRUD操作时,我想保存它的状态以备后用。 将使用docker提交适合这个用例? 我知道使用dockerfile是最佳实践。
我也试过这个。 经过一番testing,我成功保存了一个包含MySQL DB的Docker镜像。 要做到这一点,我们只需要在完成构build之后执行docker commit xxx
。 不过要小心,不要将图像文件推送到DockerHub。