Docker Compose 學習筆記

杨谖之發表於2024-09-26

Docker Compose 學習筆記

Docker Compose 安裝

安裝完 Docker Engine 後,以外掛方式安裝 Docker Compose:

  1. 設定安裝源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安裝 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 命令即可。

相關文章