Dockerconfiguration在运行时编辑节点代码

我有一个简单的MEAN应用程序,我想运行多次,唯一的问题是我不希望应用程序的每个实例指向同一个数据库。 为了在Docker中解决这个问题,我将节点代码和MongoDB放在同一个容器中。 该代码引用特定的数据库,但不重要,因为每个容器都有自己的内部数据库服务器。 显然这是浪费,而不是最佳做法,所以我正在寻找替代解决scheme。

理想情况下,我想用一个Node实例保留一个Docker镜像,我知道我可以用两个不同的环境variables两次重buildDocker镜像,但这并不能很好地扩展。

我以为我可以使用Dockernetworking来引用一个数据库服务器容器,然后为每个包含我的节点代码的容器,将入口点作为自定义脚本,在启动节点服务器之前设置一个作为环境variables传递给它的参数。 这样,每当我从该映像运行一个容器,我传递一个新的数据库名称作为节点代码将读取的参数。 这样我就可以从一个映像创build无限容器,所有这些容器都具有唯一的数据库,但指向相同的数据库服务器

我不确定这是否是最好的方式,如果有任何围绕这一点的最佳做法。

干杯

你可以做的是在运行应用程序容器时传递指向数据库的环境variables。

docker run -e "DB_HOST=mongo" -e "DB_USER=user" ... 

然后您可以修改您的节点代码以从环境variables中读取这些值。 然后,您需要创build一个networking,并将db容器和应用程序容器添加到它。 现在你可以在名为mongo的单独容器中运行mongo数据库,并将mongo作为数据库的主机名。