本文共 3407 字,大约阅读时间需要 11 分钟。
Docker Compose 是 Docker 官方开源的容器化编排工具,专为定义和管理多容器应用而设计。它能够简化复杂的应用部署流程,帮助开发者轻松构建和运行包含多个服务的容器化应用。
Docker Compose 由 Python 编写,支持通过 pip 包管理安装。安装命令如下:
pip install docker-compose
如果使用 YUM 安装,可以执行以下命令:
wget https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install docker-compose
也可以通过克隆官方 GitHub 仓库进行二进制安装。
Docker Compose 的管理结构分为三个层次:工程(Project)、服务(Service)、容器(Container)。一个 Docker Compose 文件(.docker-compose.yml)定义了工程中的所有服务,每个服务可以包含多个容器实例,定义了镜像、容器名、端口、网络等配置。
例如,以下是一个简单的 docker-compose.yml 文件示例:
version: '2.3'services: log: image: goharbor/harbor-log:v2.1.5 container_name: harbor-log restart: always dns_search: . cap_drop: - ALL cap_add: - CHOWN - DAC_OVERRIDE - SETGID - SETUID volumes: - /var/log/harbor/:/var/log/docker/:z - type: bind source: ./common/config/log/logrotate.conf target: /etc/logrotate.d/logrotate.conf - type: bind source: ./common/config/log/rsyslog_docker.conf target: /etc/rsyslog.d/rsyslog_docker.conf ports: - 127.0.0.1:1514:10514 networks: - harbor registry: image: goharbor/registry-photon:v2.1.5 container_name: registry restart: always
Docker Compose 提供了丰富的命令行工具来管理容器化应用。常用命令包括:
docker-compose ps
docker-compose logs
docker-compose build
docker-compose start nginx
docker-compose stop nginx
docker-compose rm nginx
docker-compose up
docker-compose down
docker-compose scale nginx=3 redis=3
docker-compose run web bash
详细命令和使用方法请参考官方文档:Docker Compose 参考文档。
首先,创建一个用于存放 Docker Compose 项目的目录:
mkdir mycomposecd mycompose
编写一个基本的 Flask Web 应用(app.py):
import timeimport redisfrom flask import Flaskapp = 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 f' I have been seen {count} times.\n' 在项目根目录创建 requirements.txt 文件,指定项目依赖项:
flaskredis
编写一个用于构建应用的 Dockerfile:
# syntax=docker/dockerfile:1FROM python:3.7-alpineWORKDIR /codeENV FLASK_APP=app.pyENV FLASK_RUN_HOST=0.0.0.0RUN apk add --no-cache gcc musl-dev linux-headersCOPY requirements.txt requirements.txtRUN pip install -r requirements.txtEXPOSE 5000COPY . .CMD ["flask", "run"]
在项目目录中创建 docker-compose.yml 文件,定义 Web 和 Redis 服务:
version: '3.0'services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
在项目目录中执行以下命令启动容器:
docker-compose up -d
此时,你可以通过浏览器访问 http://localhost:5000 查看应用运行情况。
为了方便代码开发和调试,可以在 docker-compose.yml 中添加挂载配置:
version: '3.0'services: web: build: . ports: - "5000:5000" volumes: - .:/code environment: FLASK_ENV: development redis: image: "redis:alpine"
通过 docker ps 查看运行中容器:
docker ps
你应该能看到名为 mycompose_web_1 的容器正在运行。
通过以上步骤,你已经成功使用 Docker Compose 部署了一个简单的 Python Web 应用。如果需要更高级的功能,可以参考官方文档进行深入学习。
欢迎在评论区留言交流!如果你觉得文章有价值,别忘了收藏、点赞和分享哦!
转载地址:http://yuxiz.baihongyu.com/