答案 0 :(得分:0)
首先,您需要决定将所有内容保存在单个容器中(单片,不能真正推荐)或分离关注点并运行单独的express / nodejs容器,mongodb容器和redisDB容器,s3是一项你不能自己运行的服务,
如果选择后一种方法,已经在docker hub上为redis和mongo提供了官方支持的图像,现在对于实际的应用服务器(节点),您需要将express设置为对节点的依赖并启动官方节点使用npm install命令生成图像(可以在其上显示),然后是npm start(或者您使用它的任何命令),不要忘记将代码作为卷包含在其中,
现在,请记住,如果你的应用程序使用mongodb中的任何参考数据,你应该确保在mongodb容器启动时插入它,或者根据已经有数据的官方mongodb创建一个图像!
另一个有价值的说明是,您应该将您的expressjs应用程序中的所有连接作为env vars传递,这样您可以在部署应用程序容器时更改它们(对于在多个主机上分发系统时非常有用),
在一天结束时,您将按此顺序启动容器:mongodb,redis和node / express。现在,与s3的连接应该已经在您的节点应用程序中处理,因此在此上下文中无关紧要,只需确保节点应用程序可以到达存储桶!
如果您只想构建一个单片容器,只需从debian jessie映像开始,在容器内部获取shell,在服务器上安装所有内容,运行代码并将映像提交到repo,然后用它来运行你的应用程序,我仍然不能推荐这种方法!
BR,