Docker Compose 學習筆記
Docker Compose 安裝
安裝完 Docker Engine 後,以外掛方式安裝 Docker Compose:
- 設定安裝源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安裝 Compose plugin
sudo yum update
sudo yum install docker-compose-plugin
例項
在這裡,我們將建立一個 Web 應用程式,該例項參考 Docker Compose 官方文件,有兩個服務,並做了一些改變。
本實驗需要兩個容器:
- Web 容器:提供 Web 服務,並連線後端的 Redis 服務。
- Redis 容器:提供 Redis 服務,接收 Web 容器的連線。
其檔案目錄結構如下所示:
app
|----web
| |----web.py
| |----requirements.txt
| |----Dockerfile
|
|----docker-compose.yml
相關檔案
~/app/web/web.py
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('number')
return 'Hello Shiyanlou! # %s' % redis.get('number')
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True)
上述程式碼建立一個十分簡單的 Web 應用程式。該程式會連線 Redis 服務,在訪問 / 頁面時,會自動將變數 number 加 1。
~/app/web/requirements.txt
flask==1.1.4
redis==3.5.3
markupsafe==2.0.1
~/app/web/Dockerfile
FROM python:3.8
COPY ./ /web/
WORKDIR /web
RUN pip install -r requirements.txt
CMD python web.py
上述 Dockerfile 定義了一個映象,該映象基於 python:3.8 映象製作,在其基礎上安裝相應的 Python 包,並執行 CMD 命令來啟動該應用程式。
~/app/docker-compose.yml
services:
redis:
image: redis:6.0
web:
build:
context: /home/shiyanlou/app/web
depends_on:
- redis
ports:
- 8001:80/tcp
volumes:
- /home/shiyanlou/app/web:/web:rw
version: "3.0"
該 docker-compose.yml 檔案定義了兩個服務,分別為 web 和 redis 服務。配置了 web 服務的埠對映,以及掛載相應的目錄。 depends_on 定義了依賴關係,被依賴服務的容器需要先建立。
進入 app 目錄下,執行 docker-compose up 命令來啟動服務:
啟動 compose
cd app
docker-compose up
由於此時 web 服務的映象還未構建,所以此時會自動根據 build 指示,使用 /home/shiyanlou/app/web/Dockerfile
檔案構建映象。
除此之外,也可以使用 -d 引數,即 docker-compose up -d
在其在後臺執行:
如果需要暫停以及刪除容器,可以直接執行 docker-compose down
命令即可。