我想在Amazon EC2 Ubuntu上運行Docker容器和單獨的node.js應用程序,並讓它們不斷運行。我運行的節點應用程序nohup
工作正常,但我想同時運行Docker和節點應用程序,以使它們同時工作或失敗。另外,它們應該在故障後自動重新啓動。 (當我在屏幕上運行docker時,它會在一段時間後失敗。)完成此操作的簡單方法是什麼?我注意到了諸如Supervisor之類的工具,但我不確定哪種工具專門用於此目的。如何讓Docker容器和節點應用程序在EC2上運行?
回答
正如我在評論中寫道,這將有助於有關於究竟是什麼的詳細信息你正試圖完成,爲什麼你必須在你的過程之間強制循環依賴。在大多數情況下,最好避免循環依賴。我懷疑你正試圖解決的可能是more simple solution to the underlying problem。我建議你重新考慮你的架構,看看你是否不能實現組件的鬆散耦合。這將大大簡化你的操作。儘管如此,管理進程之間的依賴關係仍然是一個足夠合理的關注點,所以下面是對您的問題的一般答案。
Upstart是ubuntu通過trusty的默認init守護進程。它很容易配置,並可以在失敗時重新啓動應用程序。對於未來的版本,debian和ubuntu將切換到systemd。新貴和systemd都提供管理依賴關係的機制。 Upstart的stop on stopped看起來像是你想要的,儘管我自己從未嘗試過。 Systemd允許您爲a service指定ExecStop
和FailureActions
,其中一個可用於在適當情況下殺死相關服務。 Systemd可能會提供一個我不知道的更合適的控制機制。
管理依賴關係的另一種方法是讓supervisord在容器內同時管理node.js和其他進程。 Supervisor不是啓動和停止容器的好工具,但它非常適合管理容器內的進程。通過一些編碼,你可以創建一個自定義的listener,它也可以在容器內運行,並且如果任何一個進程終止,它將指示主管退出。這種方法的優點是你可以在你的容器中可移植地封裝你的依賴關係。然後,您可以使用upstart或systemd來啓動容器,您只需確保容器在退出時重新啓動。
謝謝我要試試Upstart或systemd。 – 2014-09-03 14:31:16
@ am-rails祝你好運。如果你打算接受我的回答,在賞金結束之前這樣做會很體貼。 – 2014-09-05 07:20:32
- 1. 從Docker容器中運行的另一個節點應用程序啓動節點應用程序
- 2. 如何讓節點應用程序運行?
- 3. Docker和Julia - 如何讓.jl文件在容器中運行
- 4. 試圖在Fedora服務器上運行節點應用程序
- 5. 如何在同一臺主機上運行Angular Client應用程序和節點服務器應用程序
- 6. 在Docker容器中運行的應用程序不可訪問?
- 7. 在Docker容器中運行JHipster應用程序 - Websocket錯誤
- 8. 在Windows 10上的Docker容器上運行桌面應用程序
- 9. 在MacBookPro主機上運行Docker容器上的GUI應用程序
- 10. Jetty Docker容器運行彈簧應用程序無法連接到在Docker容器外運行的mysql
- 11. 在AWS Elastic Beanstalk上運行Docker容器 - 我的Web應用程序在哪裏?
- 12. 如何在Docker for Mac上運行GUI應用程序?
- 13. 如何顯示在Docker容器內運行的Python應用程序的輸出?
- 14. 如何在高山linux docker容器上運行crond和vsftpd?
- 15. 錯誤在官方Ruby鏡像的Docker容器上運行rails應用程序
- 16. 無法讓節點JS應用程序中的Firebase運行
- 17. 如何在Docker容器中運行Lektor?
- 18. 節點應用程序永遠運行?
- 19. 如何在swarm管理器所在的機器上運行docker swarm節點?
- 20. 在docker窗口上運行linux容器
- 21. 在Docker中運行Angular2應用程序
- 22. 如何使用supervisor在docker容器上運行elasticsearch?
- 23. 如何從主機操作系統運行Docker容器的應用程序?
- 24. 如何使用AWS SDK在遠程EC2上運行Java程序
- 25. 不同容器上的Docker應用程序和數據庫
- 26. 在AWS EMR上運行Spark,如何在主節點上運行驅動程序?
- 27. 如何讓Silverlight Pivot Server應用程序在IIS 6上運行?
- 28. 如何讓我的應用程序在Windows Server 2008上運行?
- 29. 如何在Docker的容器上運行Python服務器
- 30. 如何使用maven將節點應用程序部署到Docker
我還沒有看過它,但最新版本的docker有新的重新啓動策略功能,請參閱:http://blog.docker.com/2014/08/announcing-docker-1-2-0/ – 2014-08-27 17:07:17
你想要在Docker鏡像中運行node.js進程嗎? – fabrizioM 2014-08-27 18:14:01
@fabrizioM,沒有node.js單獨運行,但它與docker實例進行通信。 – 2014-08-27 18:54:21