構建Docker Compose服務堆棧

1.安裝了docker-compose,如今咱們要使用docker-compose來運行容器棧。這個地方會有兩個容器,一個容器中使用Flask搭建的簡單應用,另外一個容器是Redis,Flash會向redis寫入數據。所以設計到容器之間的通訊。以前咱們講到了,容器之間通訊可使用--link,也可使用docker networking的方式,那這節課,咱們講解使用docker-compose來更加方便的管理多容器棧。python

2.建立composeapp目錄web

$ cd /home/xm6f/dev/ $ mkdir composeapp $ cd composeapp $ touch Dockerfile

Dockerfile中保存用於構建Docker鏡像的指令;還要建立app.py文件,這個文件中編寫Flask代碼。redis

app.py文件內容:docker

#!/usr/bin/env python2 # -*- coding: utf-8 -*- # 導入 Flask 和 Redis 模塊 from flask import Flask from redis import Redis import os # 建立 Flask app app = Flask(__name__) # 經過 host 鏈接到 Redis redis = Redis(host="redis",port=6379) # 指定訪問路徑 @app.route('/') def hi(): redis.incr("ping") return 'hi , you have ping {0} times'.format(redis.get('ping')) if __name__ == '__main__': app.run(host="0.0.0.0",debug=True)

 

建立requirements.txt文件,裏面放置程序依賴名稱:flask

flask redis

 

建立Dockerfile文件,用於構建鏡像:瀏覽器

# 指定基鏡像爲 python2.7 FROM python MAINTAINER ruthless 416501600@qq.com ADD . /composeapp WORKDIR /composeapp RUN pip install -r requirements.txt

 

$ ls app.py Dockerfile requirements.txt

 

使用docker build -t composeapp . 指令建立composeapp鏡像。app

$ docker build -t composeapp . $ docker images

 

redis鏡像咱們就不本身製做了,直接使用Docker Hub上面默認的redis便可,獲取redis鏡像以下:less

$ docker search redis $ docker pull redis

 

3.編寫docker-compose.yml文件
應用鏡像都構建好了以後,就能夠配置compose來建立服務了,compose經過一個約定格式的配置文件配置要啓動的服務,每一個服務能夠選擇配置適當的屬性,這些屬性和docker run命令須要的參數相似。全部的服務和屬性都定義在YAML(一種標記語言)文件中,定義好了以後執行docker-compose up命令,compose服務將會根據docker-compose.yml文件啓動服務。ui

建立docker-compose.yml文件
$ touch docker-compose.ymlspa

docker-compose.yml文件中包括一個或者多個要運行的docker容器指令。

web: ##啓動容器的名字 image: composeapp ##從哪一個鏡像啓動 command: python app.py ##啓動運行以後,執行哪些命令 ports: - "5000:5000" volumes: - .:/composeapp ##當前目錄掛載到composeapp目錄 links: - redis redis: image: redis

在docker-compose.yml文件中,
image其實也能夠指定爲Dockerfile文件的路徑,
經過command指定服務啓動時要執行的命令,相似於Dockerfile中的CMD指令,
使用ports指定端口映射,
使用volumes指定卷,
使用links指定要鏈接到哪些服務。
這個地方是將redis和web服務進行性鏈接,相似於docker run命令裏面的--link選項。

編輯好docker-compose.yml文件以後,使用docker-compose up命令在docker-compose.yml所在目錄執行。compose即上傳並開始解析定義在docker-compose.yml文件中的指令。

從運行打印的日誌能夠看到,compose建立了composeapp_redis_一、composeapp_web_1兩個服務,這兩個服務的名字是docker-compose.yml所在目錄的名字加上docker-compose.yml文件中指定的名字再加上一個數字組成,其目的是保證服務的惟一性。

4.可使用-d選項,以守護方式運行compose
$ docker-compose up -d

5.查看日誌信息
$ docker-compose ps
$ docker-compose logs web
$ docker-compose logs redis

6.使用docker-compose port web 5000 查看web服務5000端口映射狀況
$ docker-compose port web 5000
0.0.0.0:5000

注意:操做docker-compose命令要跟docker-compose.yml在同一目錄,不然沒法操做。

7.網頁訪問web計數器
刷新瀏覽器,times會依次遞增

相關文章
相關標籤/搜索