对节点应用程序进行 docker 化时,我应该在哪里设置数据库?
Where should I setup the database when dockerizing a node application?
我在节点和 mongodb 上有一个后端应用程序 运行ning。我想将我的应用程序转移到 docker 所以我已经 dockerized 节点但是我很困惑我应该 运行 mongodb 还是 dockerize不管是不是。
注意:生产环境我要这样做
以下是我想到的一些场景:
- 运行 节点在 docker 容器中,mongodb 在本地机器中
- 运行 节点和数据库都在 docker 容器中,并将数据存储在与数据库相同的容器中
- 运行 节点和数据库在 docker 容器中,并将数据存储在单独的卷中
哪种场景最适合在生产服务器上实现?
我是 docker 的新手,所以 如果您有解决此问题的其他方法,请考虑提及。 您也可以参与 kubernetes 在需要的场景中
您的两个场景是产品上通常的工作方式:
- Run node in docker container and mongodb in local machine
我以前的工作就是这样。容器内的应用程序和单独 VM 上的数据库。效果很好,不能多说了。
- Run both node and database in docker containers and store the data in the container same as database
不要这样做。容器是短暂的——这意味着一旦容器被删除,里面的所有数据都会消失。这包括数据库和数据库中的记录。
- Run node and database in docker containers and store the data in separate volume
这是执行此操作的另一种正确方法,可能是最广泛接受的方法。如果您决定采用这种方式,您可能需要阅读 Volumes for Docker or StatefulSets and Persistent Volumes for Kubernetes
您可以使用以下两种解决方案之一:
为您的节点 js 服务器创建部署并使用本地 mongodb,通过您的主机 ip 建立连接(但这仅对开发有效)。要将此解决方案用于生产,您应该创建并设置一个 public @ip 地址以确保 mongo 和节点 js 应用程序之间的 TCP 连接。
第二种解决方案是为您的节点 js 服务器创建一个部署,为您的 mongodb 数据库创建一个 statfulset,并使用 (pv,pvc,storageclasse) 来保存您的数据。
我有一个使用 mongo 、redis 和 nodejs (express app) 的演示,你可以按照它来解决你的问题
按照我的例子 here.
我在节点和 mongodb 上有一个后端应用程序 运行ning。我想将我的应用程序转移到 docker 所以我已经 dockerized 节点但是我很困惑我应该 运行 mongodb 还是 dockerize不管是不是。
注意:生产环境我要这样做
以下是我想到的一些场景:
- 运行 节点在 docker 容器中,mongodb 在本地机器中
- 运行 节点和数据库都在 docker 容器中,并将数据存储在与数据库相同的容器中
- 运行 节点和数据库在 docker 容器中,并将数据存储在单独的卷中
哪种场景最适合在生产服务器上实现?
我是 docker 的新手,所以 如果您有解决此问题的其他方法,请考虑提及。 您也可以参与 kubernetes 在需要的场景中
您的两个场景是产品上通常的工作方式:
- Run node in docker container and mongodb in local machine
我以前的工作就是这样。容器内的应用程序和单独 VM 上的数据库。效果很好,不能多说了。
- Run both node and database in docker containers and store the data in the container same as database
不要这样做。容器是短暂的——这意味着一旦容器被删除,里面的所有数据都会消失。这包括数据库和数据库中的记录。
- Run node and database in docker containers and store the data in separate volume
这是执行此操作的另一种正确方法,可能是最广泛接受的方法。如果您决定采用这种方式,您可能需要阅读 Volumes for Docker or StatefulSets and Persistent Volumes for Kubernetes
您可以使用以下两种解决方案之一:
为您的节点 js 服务器创建部署并使用本地 mongodb,通过您的主机 ip 建立连接(但这仅对开发有效)。要将此解决方案用于生产,您应该创建并设置一个 public @ip 地址以确保 mongo 和节点 js 应用程序之间的 TCP 连接。
第二种解决方案是为您的节点 js 服务器创建一个部署,为您的 mongodb 数据库创建一个 statfulset,并使用 (pv,pvc,storageclasse) 来保存您的数据。
我有一个使用 mongo 、redis 和 nodejs (express app) 的演示,你可以按照它来解决你的问题 按照我的例子 here.