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.為專案建立一個目錄
[[email protected] composetest]# pwd /opt/composetest
2.建立一個app.py的python指令碼
[[email protected] 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本身。
[[email protected] 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檔案
[[email protected] 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
步驟四:構建編寫的應用
[[email protected] composetest]# docker-compose up #執行構建命令
步驟五、網頁訪問
出現的效果圖如上所示,當你重新整理頁面的時候次數會變化
而你的操作終端也會有資訊提示
步驟六:修改py檔案,改變網頁資訊
因為我們掛載了本地目錄給容器進行使用,所以可以通過更改本地檔案的方式更新容器內的資訊。
1、另起終端,xhell複製回話,修改app.py檔案
2、重新整理網頁介面
3、檢視終端介面提示
+++好吧,first少個r,不要太在意。。
小結:本文主要根據官方的給的小范例初步理解docker-compose檔案的編寫,瞭解其作用。
執行docker-compose up的時候可以加-d引數,這樣就不需要另起終端,而且強制的ctrl+c會終止容器執行,有些時候這是我們不希望看到的。
加了-d引數效果如下
有人要問了,我想看到容器反饋給我的資訊怎麼辦,這個需要用到docker logs命令了
這樣我們就能看到容器給我們反饋的資訊了
好了,本文主要介紹這麼多,下次部落格會為大家提供更多的docker-compose的使用,共同學習,努力向前!