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