尝试使用phpmyadmin和要导入的现有company_dev.sql文件设置docker mysql服务器,以便将我的开发环境停靠。
我的第一个问题是如何进行此设置?我是否需要在我的Dockerfile中指定操作系统,即Ubuntu,然后添加sudo apt-get install mysql-server并安装phpmyadmin?或者我最好从docker repo运行现有的docker镜像并在此基础上构建?
对此数据库进行CRUD操作后,我想保存其状态以供以后使用。使用docker commit是否适合这个用例?我知道使用dockerfile是最好的做法。
我感谢任何建议。
答案 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数据不是一个好习惯。