问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

测试人必备:Docker Compose 5 分钟搞定复杂环境部署

创作时间:
作者:
@小白创作中心

测试人必备:Docker Compose 5 分钟搞定复杂环境部署

引用
CSDN
1.
https://blog.csdn.net/m0_58552717/article/details/144222935

在软件测试领域,环境部署的效率直接影响着测试工作的质量和进度。Docker Compose作为管理多容器应用的强大工具,能够帮助测试人员快速搭建和管理复杂的测试环境。本文将通过一个包含Nginx、Python Flask和MySQL的示例项目,详细展示如何使用Docker Compose构建和运行完整的应用环境。

什么是Docker Compose?

Docker Compose是管理多容器应用的工具,通过YAML文件定义服务、网络和存储卷,一键启动或停止所有容器。它简化了开发、测试和部署流程,确保环境一致性。支持扩展服务、动态配置和日志管理,适用于开发环境搭建、微服务管理和测试隔离。

为什么需要Docker Compose?

在实际的工作中,我们会遇到这样的情况:

  • 开发和测试时,团队需要搭建一套完整的环境,包含多个依赖服务。
  • Web应用需要和数据库通信。
  • Web应用可能依赖Redis作为缓存。
  • 某些业务逻辑需要外部服务如消息队列(Kafka)或搜索引擎(Elasticsearch)。

手动配置这些服务会耗费大量时间,并且容易出错。此外,开发者本地环境的差异可能导致“我这能跑,但你那不行”的问题。

而通过Docker Compose我们可以:

  • 统一环境配置:通过docker-compose.yml文件定义环境,包括所有依赖服务,确保测试环境的一致性。

Docker Compose安装

在新版本的Docker Desktop 3.2.1及以上版本已经集成了新版本的Docker Compose,相比老版本的Docker Compose在使用时不需要命令中的-,也就是将docker-compose命令换成了docker compose命令

Docker Desktop下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker

下载对应平台windows/mac/linux的程序包安装即可

安装完毕可以通过以下命令检查 Compose 版本:

docker compose version

如果已安装好Docker但未安装Docker Compose,可以手动安装 Compose 插件:

  1. 下载最新版本的 Compose 二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  1. 验证安装是否成功:
docker-compose --version

Docker Compose的常用命令

  1. 启动服务

启动并运行docker-compose.yml文件中定义的所有服务:

docker-compose up
  1. 后台运行

使用-d参数可以在后台运行:

docker-compose up -d
  1. 停止服务

停止当前运行的服务:

docker-compose stop
  1. 删除服务

停止并删除容器、网络和卷:

docker-compose down
  1. 查看服务状态

列出当前服务及其状态:

docker-compose ps
  1. 重新构建服务

Dockerfile或依赖发生变化时,使用以下命令重新构建:

docker-compose build

实战案例:使用Docker Compose构建一个完整的应用

以下是使用 Docker Compose 构建一个包含 Nginx(前端)、Python Flask(后端)和 MySQL(数据库)的示例应用。

1. 项目目录结构

project/
├── docker-compose.yml
├── app/
│   ├── Dockerfile
│   ├── app.py
│   ├── requirements.txt
├── db/
│   └── init.sql
└── nginx/
    └── default.conf

2. 配置文件

(1) docker-compose.yml文件内容如下

version: '3.9'
services:
  web:
    build: ./nginx
    ports:
- "8080:80"
    depends_on:
- app
  app:
    build: ./app
    ports:
- "5000:5000"
    environment:
      FLASK_ENV: development
    depends_on:
- db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: flaskdb
    volumes:
- db_data:/var/lib/mysql
volumes:
  db_data:

(2) Nginx 配置

nginx/default.conf

server {
    listen 80;
    location / {
        proxy_pass http://app:5000;
    }
}

(3) Flask 应用

app/app.py

from flask import Flask
import pymysql
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, Docker Compose!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')

对应的依赖项文件

app/requirements.txt

flask
pymysql

(4) 数据库初始化脚本

db/init.sql

CREATE DATABASE IF NOT EXISTS flaskdb;
USE flaskdb;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

3. 构建和运行项目

(1) 构建镜像

docker-compose build

(2) 启动服务

docker-compose up -d

(3) 验证应用

  • 打开浏览器访问http://localhost:8080,会看到 "Hello, Docker Compose!"。
  • 检查 MySQL 数据库,表结构已初始化。

在测试领域,效率就是生产力。Docker Compose让复杂环境的部署不再是瓶颈,它帮助测试人员将更多精力集中在测试本身,提升了整个团队的生产效率。

“Docker Compose,不止是工具,更是测试人员的效率利器。”

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号