【发布时间】:2017-01-04 12:44:06
【问题描述】:
我是 Docker 新手。
你能看看我下面附上的方案吗?
计划
我想要的是能够拥有大量独立的 docker 容器和当前的板载软件:
- NodeJs(npm、pm2、grunt-cli 等)
- MongoDb
- 其他软件(cron、ffmpeg 等)
每个隔离容器都与应用程序代码链接到相同卷,但以不同的 ENV 变量开始:expressJS 端口、数据库名称等。你明白了,对吗?
例如,我们有 2 个独立的容器:stack1 和 stack2。
它们都使用相同的卷,应用代码位于主机的 /home/user/app_code/(卷挂载)。
stack1 内的 NodeJS 在 3001 端口上启动,并连接到其 mongoDB 服务器,该服务器使用位于 /home/user/db1(卷挂载)的 DB,并在 /home/user/storage1 处有其专用的多媒体存储
stack2 中的 NodeJS 在 3002 端口上启动,并连接到其 mongoDB 服务器,该服务器使用位于 /home/user/db2(卷挂载)的 DB,并在 /home/user/storage2 处有其专用的多媒体存储
当然stack1和stack2放在Nginx单容器反向代理后面。
问题
实施我的计划的最佳方式是什么?
据我了解,docker-compose 在我的情况下不是正确的工具。最后,我只能构建包含 nodeJs 图像和 Mongo 图像的堆栈。但是如何处理ffmpeg和cron呢?如何乘以堆栈?是否可以将它们放在单 Nginx 容器后面?
第二种方式是取"phusion/baseimage-docker",手动安装NodeJs、Mongodb、ffmpeg,将这个容器相乘,每个都隐藏在Nginx revese proxy后面。但是这种做法有点违反Best practices for writing Dockerfiles(每个容器只运行一个进程)
或者还有其他合适的方法吗?您将如何实现这种架构?
提前谢谢你!
【问题讨论】:
标签: docker mean-stack docker-compose phusion