docker三劍客之docker-compose(記官方案例)

簡介

Compose項目來源於之前的fig項目,使用python語言編寫,與docker/swarm配合度很高。

Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應用,可以一條命令啓動多個容器,使用Docker Compose不再需要使用shell腳本來啓動容器。 

Compose 通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然後使用docker-compose腳本來啓動,停止和重啓應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景。

docker-compose默認的模板文件是 docker-compose.yml,其中定義的每個服務都必須通過 image 指令指定鏡像或 build 指令(需要 Dockerfile)來自動構建。

其它大部分指令都跟 docker run 中的類似。

實驗環境:已安裝docker的主機
本文使用的是Centos7.4
docker版本:Docker version 18.09.0, build 4d60db4
ip地址:192.168.70.128


步驟一:設置
定義應用程序依賴項

1.爲項目創建一個目錄

[root@localhost composetest]# pwd
/opt/composetest

2.創建一個app.py的python腳本

[root@localhost composetest]# vim app.py      #內容如下
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
        retries = 5
        while True:
                try:
                        return cache.incr('hits')
                except redis.exceptions.ConnectionError as exc:
                        if retries == 0:
                                raise exc
                        retries -= 1
                        time.sleep(0.5)

@app.route('/')
def hello():
        count = get_hit_count()
        return 'Hello World! I have been seen {} times.\n'.format(count)

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

3.另創建一個requirements.txt文件

vim requirements.txt
flask
redis

++++++++++++不才,沒有研究python,所以暫時不能爲各位解釋這個python腳本,日後學習中定回頭重新完善++++++++++

步驟二:創建一個Dockerfile

生成Docker鏡像的Dockerfile,該鏡像包含Python應用程序所需的所有依賴項,包括Python本身。

[root@localhost composetest]# vim dockerfile     #內容如下
FROM python:3.4-alpine     #指定鏡像爲python:3.4-alpine
ADD . /code                          #添加當前目錄到鏡像下的/code,不存在會自動創建
WORKDIR /code                 #指定工作目錄爲/code
RUN pip install -r requirements.txt    #python下載命令,安裝的服務爲我們上文定義的 requirements.txt 文件內容
CMD ["python", "app.py"]    #定義容器啓動時的命令

步驟三:編寫docker-compose文件

[root@localhost composetest]# vim docker-compose.yml 

version: '3'                   #版本爲3
services:                      #定義服務
    web:                            #服務名爲web
        build: .                      #dockerfile文件路徑爲當前目錄
        ports:                        #暴露端口
         - "5000:5000"        #本地主機5000端口映射給容器使用
        volumes:                 #掛載
         - .:/code                  #定義掛載目錄爲當前目錄給容器/code使用
    redis:                         #服務名爲redis
        image: "redis:alpine"    #使用鏡像爲redis:alpine

步驟四:構建編寫的應用

[root@localhost composetest]# docker-compose up     #執行構建命令

docker三劍客之docker-compose(記官方案例)
docker三劍客之docker-compose(記官方案例)

步驟五、網頁訪問
docker三劍客之docker-compose(記官方案例)
出現的效果圖如上所示,當你刷新頁面的時候次數會變化
docker三劍客之docker-compose(記官方案例)
而你的操作終端也會有信息提示
docker三劍客之docker-compose(記官方案例)

步驟六:修改py文件,改變網頁信息

因爲我們掛載了本地目錄給容器進行使用,所以可以通過更改本地文件的方式更新容器內的信息。

1、另起終端,xhell複製回話,修改app.py文件

docker三劍客之docker-compose(記官方案例)

2、刷新網頁界面

docker三劍客之docker-compose(記官方案例)

3、查看終端界面提示

docker三劍客之docker-compose(記官方案例)
+++好吧,first少個r,不要太在意。。

小結:本文主要根據官方的給的小范例初步理解docker-compose文件的編寫,瞭解其作用。
執行docker-compose up的時候可以加-d參數,這樣就不需要另起終端,而且強制的ctrl+c會終止容器運行,有些時候這是我們不希望看到的。
docker三劍客之docker-compose(記官方案例)
加了-d參數效果如下docker三劍客之docker-compose(記官方案例)
有人要問了,我想看到容器反饋給我的信息怎麼辦,這個需要用到docker logs命令了
docker三劍客之docker-compose(記官方案例)
這樣我們就能看到容器給我們反饋的信息了
好了,本文主要介紹這麼多,下次博客會爲大家提供更多的docker-compose的使用,共同學習,努力向前!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章