云計算核心技術(shù)Docker教程: Compose使用
Compose 是用于定義和運行多容器 Docker 應(yīng)用程序的工具。通過 Compose,您可以使用 YML 文件來配置應(yīng)用程序需要的所有服務(wù)。然后,使用一個命令,就可以從 YML 文件配置中創(chuàng)建并啟動所有服務(wù)。
Compose 使用的三個步驟:
1.使用 Dockerfile 定義應(yīng)用程序的環(huán)境。
2.使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù),這樣它們可以在隔離環(huán)境中一起運行。
3.最后,執(zhí)行 docker-compose up 命令來啟動并運行整個應(yīng)用程序。
運行以下命令以下載 Docker Compose 的當前穩(wěn)定版本:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
將可執(zhí)行權(quán)限應(yīng)用于二進制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
創(chuàng)建軟鏈:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
測試是否安裝成功:
$ docker-compose --version
cker-compose version 1.24.1, build 4667896b
使用示例:
創(chuàng)建一個測試目錄:命令如下
$ mkdir composetest
$ cd composetest
在測試目錄中創(chuàng)建一個名為 app.py 的文件,該文件redis 是應(yīng)用程序網(wǎng)絡(luò)上的 redis 容器的主機名,該主機使用的端口為 6379。
在 composetest 目錄中創(chuàng)建另一個名為 requirements.txt 的文件,內(nèi)容如下:
flask
redis
在 composetest 目錄中,創(chuàng)建一個名為的文件 Dockerfile,內(nèi)容如下:
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
Dockerfile 內(nèi)容解釋:
FROM python:3.7-alpine: 從 Python 3.7 映像開始構(gòu)建鏡像。
WORKDIR /code: 將工作目錄設(shè)置為 /code。
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
設(shè)置 flask 命令使用的環(huán)境變量。
RUN apk add --no-cache gcc musl-dev linux-headers: 安裝 gcc,以便諸如 MarkupSafe 和 SQLAlchemy 之類的 Python 包可以編譯加速。
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
復(fù)制 requirements.txt 并安裝 Python 依賴項。
COPY . .: 將 . 項目中的當前目錄復(fù)制到 . 鏡像中的工作目錄。
CMD ["flask", "run"]: 容器提供默認的執(zhí)行命令為:flask run。
在測試目錄中創(chuàng)建一個名為 docker-compose.yml 的文件,然后粘貼以下內(nèi)容:
# yaml 配置
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
該 Compose 文件定義了兩個服務(wù):web 和 redis。
web:該 web 服務(wù)使用從 Dockerfile 當前目錄中構(gòu)建的鏡像。然后,它將容器和主機綁定到暴露的端口 5000。此示例服務(wù)使用 Flask Web 服務(wù)器的默認端口 5000 。
redis:該 redis 服務(wù)使用 Docker Hub 的公共 Redis 映像。
在測試目錄中,執(zhí)行以下命令來啟動應(yīng)用程序:
# docker-compose up
如果你想在后臺執(zhí)行該服務(wù)可以加上 -d 參數(shù):
# docker-compose up -d
相關(guān)閱讀:
云計算核心技術(shù)Docker教程: Dockerfile指令詳解