用MySQL / MariaDB数据库创build一个Docker容器

我打算将我的应用程序堆栈迁移到Docker。 让我来描述一下我目前使用的服务:

  • HAProxy ,用于所有服务的连接(HTTP和原始TCP连接)上的SSL终止,并将stream量转发到下面的服务。
  • Nginx ,提供静态文件,如更新和一些信息页面。
  • 运行主应用程序的Node.js。
  • MySQL(MariaDB) ,由所有应用程序使用和共享的数据库。

我的问题是关于数据库。

在这种情况下运行MariaDB的正确方法是什么?

  1. 安装和运行它在我的容器,以及其他服务?
  2. 在一个单独的容器中运行官方映像 ,并使用Docker run命令的--link选项将我的容器链接到它?

第一个select是否有缺点?

TeamSpeakdocker集装箱使用第二个选项,这就是让我质疑自己关于在我的情况下运行数据库的正确方式,但我特别感觉更倾向于打包在我自己的图像中的所有服务。

Docker哲学:将你的应用程序分解成microservices并为每个microservice使用一个容器。

在你的情况下,我推荐一个MariaDB容器,使用官方( Library )图像给你更容易的更新pipe理,但随意使用你的自定义图像。

一个HAProxy容器,一个nginx容器和一个nodejs容器。

这样,您就可以将应用程序分成microservices ,并且可以在孤立的环境中更轻松地升级,pipe理和排除故障。

如果您正考虑通过docker将应用程序交付给最终用户,那么一个简单的docker-compose文件就可以轻松启动所需的容器。