編者按:這是一篇翻譯,原文詳見:https://docs.docker.com/compose/production/
譯文原文:http://www.itmuch.com/docker/27-docker-compose-in-production/,轉載請說明出處。
在development中使用Compose定義應用程序時,可使用此定義,在不同環境(如CI,staging和production)中運行應用程序。
部署應用最簡單的方法是在單機服務器上運行,類似於運行development環境的方式。如果要對應用程序擴容,可在Swarm集羣上運行Compose應用程序。
Modify your Compose file for production(爲生產環境修改您的Compose文件)
您幾乎肯定會對您的應用配置進行更改,從而使這些配置更適合線上環境。 這些更改可能包括:
- 刪除任何綁定到應用程序代碼的Volume,以便代碼保持在容器內,不能從外部更改
- 綁定到主機上的不同端口
- 設置不同的環境變量(例如,減少日誌的冗長程度或啓用email發送)
- DEBUG INFO WARN ERROR FETAL
- 指定重啓策略(例如,
restart: always
),從而避免停機 - 添加額外服務(例如,日誌聚合器)
因此,您可能需要定義一個額外的Compose文件,比如production.yml
,它指定了適用於生產的配置。此配置文件只需包含從原始Compose文件的修改。該附加Compose文件,可在原始的docker-compose.yml
基礎上被應用,從而創建新的配置。
一旦獲得了第二個配置文件,可使用-f
選項告訴Compose:
docker-compose -f docker-compose.yml -f production.yml up -d
請參閱 Using multiple compose files 獲取更完整的示例。
Deploying changes(部署修改)
當您更改應用代碼時,您需要重新構建鏡像並重新創建容器。例如,重新部署名爲web
的服務,可使用:
$ docker-compose build web
$ docker-compose up --no-deps -d web
這將會先重新構建web
的鏡像,然後停止、銷燬、重新創建web
服務。 --no-deps
標誌可防止Compose重新創建任何web
依賴的服務。
Running Compose on a single server(單機服務器上運行Compose)
通過適當地設置DOCKER_HOST
、DOCKER_TLS_VERIFY
和DOCKER_CERT_PATH
等環境變量,可使用Compose將應用程序部署到遠程的Docker主機。 對於像這樣的任務,Docker Machine 可使本地/遠程Docker主機管理變得非常簡單,即使您沒有遠程部署也推薦使用Docker Machine。
一旦您設置瞭如上環境變量,所有正常的docker-compose
命令將無需進一步的配置。
Running Compose on a Swarm cluster(在Swarm集羣上運行Compose)
Docker Swarm ,是一款Docker原生的集羣系統,它暴露了與單個Docker主機相同的API,這意味着您可在Swarm實例上使用Compose,並在多個主機上運行應用程序。
閱讀更多關於集成指Compose/Swarm整合的內容,請詳見 integration guide 。