如何在一个Docker镜像中运行两个不同的Nodejs应用程序? 两个不同的CMD [ "node", "app.js"]
和CMD [ "node", "otherapp.js"]
将无法正常工作,原因可能只有一个CMD
指令码头文件。在一个Docker镜像中运行两个nodejs应用程序
1
A
回答
3
我建议使用pm2
作为入口点进程,它将处理docker镜像中的所有NodeJS应用程序。这样做的好处是pm2
可以作为合适的进程管理器,它的编号为essential in docker。其他有用的功能包括负载均衡,重新启动消耗太多内存的应用程序或因任何原因而死亡的应用程序以及日志管理。
这里有一个Dockerfile
我已经使用了一段时间:
#A lightweight node image
FROM mhart/alpine-node:6.5.0
#PM2 will be used as PID 1 process
RUN npm install -g [email protected]
# Copy package json files for services
COPY app1/package.json /var/www/app1/package.json
COPY app2/package.json /var/www/app2/package.json
# Set up working dir
WORKDIR /var/www
# Install packages
RUN npm config set loglevel warn \
# To mitigate issues with npm saturating the network interface we limit the number of concurrent connections
&& npm config set maxsockets 5 \
&& npm config set only production \
&& npm config set progress false \
&& cd ./app1 \
&& npm i \
&& cd ../app2 \
&& npm i
# Copy source files
COPY . ./
# Expose ports
EXPOSE 3000
EXPOSE 3001
# Start PM2 as PID 1 process
ENTRYPOINT ["pm2", "--no-daemon", "start"]
# Actual script to start can be overridden from `docker run`
CMD ["process.json"]
process.json
文件中的CMD
是described here
+0
谢谢,我会研究它。 – Oleg
相关问题
- 1. 在另一个docker镜像(php,nodejs,phantomjs)中使用单命令docker镜像
- 2. 在单个Docker镜像上同时运行多个应用程序
- 3. 如何在一个命令中运行多个docker镜像?
- 4. 如何在docker中运行两个python应用程序
- 5. 为NodeJS + PostgreSQL web应用程序创建Docker镜像
- 6. Docker,在Windows上运行Macos Docker镜像
- 7. 在两个屏幕上运行的iOS应用程序(不镜像)
- 8. 如何在Docker镜像中运行shell脚本和jar应用程序?
- 9. 哪个官方Docker镜像应该用于运行具有多个依赖关系的应用程序?
- 10. 错误在官方Ruby镜像的Docker容器上运行rails应用程序
- 11. 在Docker中运行Angular2应用程序
- 12. 在cpanel godaddy主机上运行第一个Nodejs应用程序
- 13. 在Docker中包装应用程序可部署镜像
- 14. 在cocos2d应用程序运行应用程序之前的两个图像
- 15. 在Docker容器中运行的Jenkins构建Docker镜像
- 16. 哪个Amazon AMI适用于Docker镜像中的Rails应用程序?
- 17. WPF镜像应用程序到两个窗口?
- 18. 运行enRoute OSGi框架的Docker镜像?
- 19. 在同一个Dalvik VM中运行两个进程/应用程序
- 20. 如何升级Docker镜像中的应用程序
- 21. gitlab.com CI-在docker中使用docker构建NodeJS应用程序
- 22. Docker - 在单个容器中运行两个进程
- 23. 无法在Docker-machine(虚拟Box)上运行Docker镜像的Go(lang)应用程序
- 24. 在app上运行NodeJS应用程序
- 25. 一个应用程序正在tomcat7运行两次
- 26. Docker应用程序无法访问在另一个容器中运行的MySQL
- 27. 要使用哪个Tensorflow Docker镜像?
- 28. 在Jenkins中构建Docker镜像(在Docker镜像中) - Cloud Docker代理
- 29. Android:在一个屏幕上的两个不同视图中的应用程序中运行应用程序(splitscreen?)
- 30. Docker Hub镜像更改时重新部署Openshift应用程序?
你可以包裹在“启动脚本”两个节点的应用程序的启动命令 - 在这里看到一个[Docker教程](http://ishlema.co.za/running-services-when-docker-container-starts/) - 我希望你觉得它有帮助。 – ishmaelMakitla
下面给出了您的解决方案,但您为什么需要它?以这种方式连接两者有什么好处? –
我同意大部分时间你会更好地运行自己的图像中的每个应用程序。然而,在我们的情况下,我们没有其他办法可以确保这两个应用程序将在一个网络上运行。尽管如此,这个故事太长以至于没有SO评论。我们希望有一天他们会分裂。 – Mchl