云計算核心技術(shù)Docker教程: Compose使用
Compose 是用于定義和運行多容器 Docker 應用程序的工具。通過 Compose,您可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創(chuàng)建并啟動所有服務。
Compose 使用的三個步驟:
1.使用 Dockerfile 定義應用程序的環(huán)境。
2.使用 docker-compose.yml 定義構(gòu)成應用程序的服務,這樣它們可以在隔離環(huán)境中一起運行。
3.最后,執(zhí)行 docker-compose up 命令來啟動并運行整個應用程序。
運行以下命令以下載 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)限應用于二進制文件:
$ 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 是應用程序網(wǎng)絡上的 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
復制 requirements.txt 并安裝 Python 依賴項。
COPY . .: 將 . 項目中的當前目錄復制到 . 鏡像中的工作目錄。
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 文件定義了兩個服務:web 和 redis。
web:該 web 服務使用從 Dockerfile 當前目錄中構(gòu)建的鏡像。然后,它將容器和主機綁定到暴露的端口 5000。此示例服務使用 Flask Web 服務器的默認端口 5000 。
redis:該 redis 服務使用 Docker Hub 的公共 Redis 映像。
在測試目錄中,執(zhí)行以下命令來啟動應用程序:
# docker-compose up
如果你想在后臺執(zhí)行該服務可以加上 -d 參數(shù):
# docker-compose up -d
相關(guān)閱讀:
云計算核心技術(shù)Docker教程: Dockerfile指令詳解