【趙強老師】使用Docker Compose進行服務編排

【趙強老師】使用Docker Compose進行服務編排

1、什麼是Docker Compose?

Docker Compose是一個用來定義和運行復雜應用的Docker工具。一個使用Docker容器的應用,一般由多個容器組成。使用Docker Compose再也不須要使用shell腳原本啓動容器,而使用服務編排的方式來管理容器。
Docker Compose 經過一個配置文件來管理多個Docker容器,在配置文件中,全部的容器經過services來定義,而後使用docker-compose腳原本啓動,中止和重啓應用,和應用中的服務以及全部依賴服務的容器,很是適合組合使用多個容器進行開發的場景。python

Docker Compose的核心是經過一個YAML文件來管理多個Docker容器,在配置文件中,全部的容器經過services來定義。git

2、什麼是YAML文件?

YAML (YML)的意思實際上是:"Yet Another Markup Language"(還是一種置標語言)的縮寫。YAML的語法和其餘高階語言相似,而且能夠簡單表達清單、散列表,標量等資料形態。它使用空格縮排和大量依賴外觀的特點,特別適合用來表達或編輯數據結構、各類設定檔、傾印除錯內容、文件大綱(例如:許多電子郵件標題格式和YAML很是接近)。能夠是用 .yml 或 .yaml 做爲文件擴展名。github

3、部署Docker Compose

curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
docker-compose --version

【趙強老師】使用Docker Compose進行服務編排

4、使用Docker Compose構建Python Web應用

這裏,咱們將使用兩種不一樣的方式:手動部署和利用Docker Compose部署,來講明使用Docker Compose進行部署所帶來的好處。web

  • 首先,咱們須要建立咱們的應用程序,實現一個簡單的計數器功能。這裏咱們須要建立三個文件:app.py、requirements.txt和Dockerfile,具體內容以下。
##app.py應用程序代碼
from flask import Flask
from redis import Redis
import os
app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello World! I have been seen %s times.' % redis.get('hits')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

-----------------------------------------   
##requirements.txt文件內容
flask
redis

-----------------------------------------   
##Dockerfile文件內容
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
COPY app.py /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
  • 手動部署應用程序
##因爲應用程序中,須要redis的支持,首先啓動一個Redis容器
docker run --name myredis -d -p 6379:6379 redis

##使用docker build編譯Dockerfile
docker build -t myapplication .

##使用docker run命令啓動應用程序,並使用--link參數鏈接到上面的redis容器中
docker run --name myapp_using_redis -p 5000:5000 --link myredis:redis -d myapplication
其中:--link參數中的:
myredis:是上面的啓動的Redis容器
redis:是這個Redis的容器的別名(能夠當作是HostName)

##經過網址http://192.168.15.133:5000訪問應用程序
##刷新頁面,計數器會自增。

【趙強老師】使用Docker Compose進行服務編排

  • 利用docker-compose快速部署Python開發環境

而事實上,咱們可使用更加簡化的方式來定義咱們的容器組合管理,使用Docker-compose來定義咱們的容器組合關係。目錄結構下,包含如下文件:redis

【趙強老師】使用Docker Compose進行服務編排

其中,docker-compose.yml文件內容以下:docker

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis"

執行docker-compose up來啓動應用,訪問應用程序:http://192.168.15.133:5000/shell

【趙強老師】使用Docker Compose進行服務編排

從這裏例子中咱們能夠看到,經過Docker Compose的YAML配置文件,咱們把兩個相關的Service(web和redis)進行了服務編排,從而簡化的應用的部署。flask

【趙強老師】使用Docker Compose進行服務編排

相關文章
相關標籤/搜索