天天看點

Docker系列教程27-在生産環境中使用Docker Compose

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

繼續閱讀