使用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。