docker-compose安裝和使用


1、docker-compose簡介

  Compose 是用於定義和運行多容器 Docker 應用程序的工具。通過 Compose,您可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。

2、安裝

Linux

Linux 上我們可以從 Github 上下載它的二進制包來使用,最新發行的版本地址:https://github.com/docker/compose/releases

運行以下命令以下載 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

要安裝其他版本的 Compose,請替換 1.24.1。

將可執行權限應用於二進制文件:

$ 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

注意: 對於 alpine,需要以下依賴包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。

macOS

Mac 的 Docker 桌面版和 Docker Toolbox 已經包括 Compose 和其他 Docker 應用程序,因此 Mac 用戶不需要單獨安裝 Compose。

windows PC

Windows 的 Docker 桌面版和 Docker Toolbox 已經包括 Compose 和其他 Docker 應用程序,因此 Windows 用戶不需要單獨安裝 Compose。

3、准備

使用Compose基本上需要三個步驟:

  1. 用Dockerfile定義應用程序的環境,以便可以在任何地方復制。

  2. docker-compose.yml 中定義組成應用程序的服務,所以它們可以在一個孤立的環境中運行

  3. 運行 docker-compose up 和Compose啟動並運行整個應用程序。

docker-compose.yml 標准格式:

version: "3.8"
services:
  web:                  #運行的服務1:web
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:                #與哪個容器進行相連
      - redis
  redis:                 #運行的服務2:redis
    image: redis
volumes:
  logvolume01: {}
(每一行空兩格)

 

4、使用和運行

1、准備

創建一個測試目錄:

$ mkdir composetest
$ cd composetest

在測試目錄中創建一個名為 app.py 的文件,並復制粘貼以下內容:

composetest/app.py 文件代碼
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)


@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

在此示例中,redis 是應用程序網絡上的 redis 容器的主機名,該主機使用的端口為 6379。

在 composetest 目錄中創建另一個名為 requirements.txt 的文件,內容如下:

flask
redis 

2、創建 Dockerfile 文件

在 composetest 目錄中,創建一個名為的文件 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。

3、創建 docker-compose.yml

在測試目錄中創建一個名為 docker-compose.yml 的文件,然后粘貼以下內容:

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 映像。

4、使用 Compose 命令構建和運行您的應用

在測試目錄中,執行以下命令來啟動應用程序:

docker-compose up

如果想在后台執行該服務可以加上 -d 參數:

docker-compose up -d

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM