测试环境用Docker搭建,核心是轻量、隔离、可复现:通过Dockerfile定义镜像、docker-compose.yml编排多服务依赖,配合国内镜像源与基础环境校验,几分钟即可拉起干净可复现的测试沙盒。

测试环境用 Docker 搭建,核心是轻量、隔离、可复现。不靠手动装一堆服务,而是用镜像固化环境,用 compose 编排依赖,几分钟就能拉起一套干净的测试环境。
基础环境得先稳住
确保宿主机已安装:
- Docker Engine ≥ 20.10(
docker --version验证) - Docker Compose ≥ 2.0(
docker compose version验证) - 网络通畅,推荐配置国内镜像源(如阿里云
https://alzgoonw.mirror.aliyuncs.com),写入/etc/docker/daemon.json后sudo systemctl restart docker
Dockerfile 定义测试镜像
比如你要跑 Python + Selenium 测试,就写个精简镜像:
FROM python:3.10-slim RUN apt-get update && apt-get install -y chromium fonts-noto-color-emoji && rm -rf /var/lib/apt/lists/* RUN pip install pytest selenium allure-pytest WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt
docker-compose.yml 编排多服务依赖
测试常需配套服务(数据库、Mock 服务、API 网关等),用 compose 统一管理:
services:
test-runner:
build: .
volumes:
- ./tests:/app/tests
- ./report:/app/report
environment:
- TEST_ENV=staging
- SELENIUM_REMOTE_URL=http://selenium:4444/wd/hub
depends_on: [selenium, mysql]
selenium:
image: selenium/standalone-chromium:latest
shm_size: 2gb
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: test123
MYSQL_DATABASE: testdb
ports: ["3306:3306"]
volumes: ["mysql-data:/var/lib/mysql"]
volumes:
mysql-data:启动与验证一步到位
docker compose up -d # 启动全部服务 docker compose ps # 查看状态,确认都是 healthy docker exec test-runner pytest tests/ --alluredir=report # 直接运行测试
几个关键细节别漏
- 测试数据要持久化?加
volumes映射本地目录(如./data:/app/data) - 端口被占?改
ports里的宿主机端口(如"8081:8080") - 需要特定版本?用
image: nginx:1.25-alpine或build: {args: {NODE_VERSION: 18}} - CI 中跑?GitLab CI 或 GitHub Actions 里直接
docker compose up -d && docker exec ...即可
配好了就是一套“开箱即用”的测试沙盒,删掉容器,环境就彻底还原,下次再拉,还是干净的。


















