來源:TechWeb.com.cn
Compose 是用於定義和運行多容器 Docker 應用程式的工具。通過 Compose,您可以使用 YML 文件來配置應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。
Compose 使用的三個步驟:
1.使用 Dockerfile 定義應用程式的環境。
2.使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起運行。
3.最後,執行 docker-compose up 命令來啟動並運行整個應用程式。
運行以下命令以下載 Docker Compose 的當前穩定版本:
$ 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
將可執行權限應用於二進位文件:
$ sudo chmod +x /usr/local/bin/docker-compose
創建軟鏈:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
測試是否安裝成功:
$ docker-compose version
cker-compose version 1.24.1, build 4667896b
使用示例:
創建一個測試目錄:命令如下
$ mkdir composetest
$ cd composetest
在測試目錄中創建一個名為 app.py 的文件,該文件redis 是應用程式網絡上的 redis 容器的主機名,該主機使用的埠為 6379。
在 composetest 目錄中創建另一個名為 requirements.txt 的文件,內容如下:
flask
redis
在 composetest 目錄中,創建一個名為的文件 Dockerfile,內容如下:
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 內容解釋:
FROM python:3.7-alpine: 從 Python 3.7 映像開始構建鏡像。
WORKDIR /code: 將工作目錄設置為 /code。
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
設置 flask 命令使用的環境變量。
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"]: 容器提供默認的執行命令為:flask run。
在測試目錄中創建一個名為 docker-compose.yml 的文件,然後粘貼以下內容:
# yaml 配置
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
該 Compose 文件定義了兩個服務:web 和 redis。
web:該 web 服務使用從 Dockerfile 當前目錄中構建的鏡像。然後,它將容器和主機綁定到暴露的埠 5000。此示例服務使用 Flask Web 伺服器的默認埠 5000 。
redis:該 redis 服務使用 Docker Hub 的公共 Redis 映像。
在測試目錄中,執行以下命令來啟動應用程式:
# docker-compose up
如果你想在後臺執行該服務可以加上 -d 參數:
# docker-compose up -d
相關閱讀:
雲計算核心技術Docker教程: Dockerfile指令詳解