編者按:這是一篇翻譯,原文詳見: 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。