如何在一個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. 運行數千個NodeJS應用程序
- 10. 哪個官方Docker鏡像應該用於運行具有多個依賴關係的應用程序?
- 11. 錯誤在官方Ruby鏡像的Docker容器上運行rails應用程序
- 12. 在Docker中運行Angular2應用程序
- 13. 在cpanel godaddy主機上運行第一個Nodejs應用程序
- 14. 在Docker中包裝應用程序可部署鏡像
- 15. 在一個tomcat上部署和運行兩個應用程序
- 16. 在cocos2d應用程序運行應用程序之前的兩個圖像
- 17. 哪個Amazon AMI適用於Docker鏡像中的Rails應用程序?
- 18. docker>使用gulp和nodemon運行兩個nodejs腳本
- 19. WPF鏡像應用程序到兩個窗口?
- 20. 將Docker鏡像作爲容器運行
- 21. 運行enRoute OSGi框架的Docker鏡像?
- 22. gitlab.com CI-在docker中使用docker構建NodeJS應用程序
- 23. 如何升級Docker鏡像中的應用程序
- 24. Docker - 在單個容器中運行兩個進程
- 25. 在同一個Dalvik VM中運行兩個進程/應用程序
- 26. 無法在Docker-machine(虛擬Box)上運行Docker鏡像的Go(lang)應用程序
- 27. 使用Docker容器來構建另一個Docker鏡像
- 28. 在app上運行NodeJS應用程序
- 29. Docker應用程序無法訪問在另一個容器中運行的MySQL
- 30. 一個應用程序正在tomcat7運行兩次
你可以包裹在「啓動腳本」兩個節點的應用程序的啓動命令 - 在這裏看到一個[Docker教程](http://ishlema.co.za/running-services-when-docker-container-starts/) - 我希望你覺得它有幫助。 – ishmaelMakitla
下面給出了您的解決方案,但您爲什麼需要它?以這種方式連接兩者有什麼好處? –
我同意大部分時間你會更好地運行自己的圖像中的每個應用程序。然而,在我們的情況下,我們沒有其他辦法可以確保這兩個應用程序將在一個網絡上運行。儘管如此,這個故事太長以至於沒有SO評論。我們希望有一天他們會分裂。 – Mchl