2017-01-19 62 views
9

我目前正在努力部署我的服務,我想問一下,當你需要處理多個存儲庫時,什麼是正確的方法。這些軟件倉庫是獨立的,但要在生產環境中運行,所有事情都需要啓動。使用docker-compose與多個存儲庫

我的設置:

  • Git倉庫後端:
    • 後端項目的Rails
    • 泊塢窗 - 撰寫:後端(揭露3000),db和Redis的
  • Git倉庫前端
    • Express.js服務器
    • 搬運工-撰寫:(暴露4200)

兩者都可以獨立地運行,並且測試可以由CI爲生產 執行

  • Git倉庫Nginx的
    • 需要連接到其他兩個服務(相同的碼頭網絡)
    • 將請求轉發到正確的服務

我已經試過這兩個服務子模塊包括到Nginx的存儲庫並使用nginx的回購的泊塢窗,撰寫,但我不與它真的很高興。

回答

9

您可以爲每個要運行的服務構建並推送映像,並讓生產環境運行所有3個容器。

然後,你的生產docker-compose.yml應該是這樣的:

lb: 
    image: nginx 
    depends_on: 
    - rails 
    - express 
    ports: 80:80 

    rails: 
    image: yourorg/railsapp 

    express: 
    image: yourorg/expressapp 

需要指出的是docker-compose不建議在生產環境;你應該考慮使用Distributed Application Bundles(這仍是一個實驗性的功能,這將在1.13版本發佈核心)

或者,你可以像ansible工具或bash腳本編排您的容器;只要確保你創建了一個碼頭網絡,並將所有三個容器連接到它,以便他們可以找到對方。

編輯:自泊塢窗V17和DAB S IN贊成Compose file v3的貶低,似乎單主機環境,docker-compose是運行多業務應用的有效途徑。對於多主機/ HA /集羣化方案,您可能希望查看Docker Swarm以獲取自管理解決方案,或者通過Docker Cloud查看更多PaaS方法。無論如何,我建議你在Play-with-Docker這個官方的在線沙盒中試用它,你可以在其中分散多個主機,並且可以隨時隨地使用羣集,而無需拆分自己的盒子。

+0

謝謝你的回答。我將更多地關注像kubernetes或docker swarm這樣的容器編排工具。 –

+0

我可以推薦[Docker官方培訓](http://training.play-with-docker.com)快速瞭解如何在沙盒0設置環境中執行此操作。 此外,通過'docker-compose' v 3+,現在可以使用[docker stack deploy]部署到swarm集羣(https://docs.docker.com/engine/reference/commandline/stack_deploy/ #例子)。確保你閱讀了關於撰寫服務的新'deploy'選項的文檔。 – gvilarino