使用Docker为dev环境设置MySQL

时间:2017-09-02 13:40:49

标签: mysql docker dockerfile

尝试使用phpmyadmin和要导入的现有company_dev.sql文件设置docker mysql服务器,以便将我的开发环境停靠。

我的第一个问题是如何进行此设置?我是否需要在我的Dockerfile中指定操作系统,即Ubuntu,然后添加sudo apt-get install mysql-server并安装phpmyadmin?或者我最好从docker repo运行现有的docker镜像并在此基础上构建?

对此数据库进行CRUD操作后,我想保存其状态以供以后使用。使用docker commit是否适合这个用例?我知道使用dockerfile是最好的做法。

我感谢任何建议。

2 个答案:

答案 0 :(得分:0)

以前我使用过这个Dockerfile来恢复MySQL数据。

  

我的第一个问题是如何进行此设置?

此dockerfile正在使用mysqldump从实际环境/保存加载到docker env。你也可以这样做。实际上,它会在指定的数据库中加载/保存整个表。

  

我是否需要指定操作系统,即我的Dockerfile中的Ubuntu,然后添加sudo apt-get install mysql-server并安装phpmyadmin?

您可以看到此docker镜像是从DockerHub - library/mysql创建的,除了phpmyadmin之外,我们不需要准备基本的中间件。

  

或者我最好从docker repo运行现有的docker镜像并在此基础上构建?

最好使用现有的Docker存储库!

  

对此数据库进行CRUD操作后,我想保存其状态以供以后使用。使用docker commit是否适合这个用例?我知道使用dockerfile是最好的做法。

我也试过这个。经过一些测试,我成功保存了包含MySQL DB的docker镜像。为此,我们只需要在完成构建后执行docker commit xxx。但请注意,不要将图像文件推送到DockerHub。

答案 1 :(得分:0)

首先,使用docker,每个容器应该有一个服务/守护进程。在你的情况下,mysql和phpmyadmin应该放在不同的容器中。这不是强制性的(有解决方法),但使事情变得更容易。

为了避免重新发明轮子,恕我直言,你应该总是使用现有的图像作为想要的服务,特别是如果他们是官方的。但同样,您可以选择以任何理由从头开始(基本图像,例如" Ubuntu"或者#34; Debian"只是为了命名两个)并安装所需的东西。

关于存储问题:docker容器应始终是不可变的。如果容器需要保存它的状态,则应使用volumes。卷是一种在容器和主机之间共享文件夹的方法。例如,官方mysql映像使用卷来存储数据库文件。

所以,总而言之,你应该尽可能使用现成的图像,不,使用git commit存储mysql数据不是一个好习惯。