自动化验收测试:DockerCompose与Jenkins的应用实践
立即解锁
发布时间: 2025-08-24 02:19:36 阅读量: 1 订阅数: 4 

### 自动化验收测试:Docker Compose 实战指南
#### 1. Docker Compose 基础功能
Docker Compose 是一个强大的工具,能通过简短的配置和命令来编排服务。例如,启动 `calculator` 和 `redis` 两个容器:
```bash
$ docker-compose up -d
```
可使用以下命令检查容器运行状态:
```bash
$ docker-compose ps
```
输出结果示例:
| Name | Command | State | Ports |
|------------------------|--------------------|----------------|-------------------------|
| project_calculator_1 | java -jar app.jar | Up | 0.0.0.0:8080->8080/tcp |
| project_redis_1 | docker-entrypoint.sh redis ... | Up | 6379/tcp |
容器名前缀为项目名,可通过 `-p <project_name>` 手动指定。也可用 `docker ps` 确认容器运行状态。测试完成后,用以下命令销毁环境:
```bash
$ docker-compose down
```
##### 1.1 构建镜像
可让 Docker Compose 构建镜像,需在配置中指定 `build` 属性而非 `image`。例如,将 `docker-compose.yml` 放在 `calculator` 项目目录下,配置如下:
```yaml
version: "3"
services:
calculator:
build: .
ports:
- 8080
redis:
image: redis:latest
```
使用以下命令构建镜像:
```bash
$ docker-compose build
```
也可在启动容器前构建镜像:
```bash
$ docker-compose --build up
```
##### 1.2 扩展服务
Docker Compose 可自动创建同一容器的多个实例,可在 `docker-compose.yml` 中指定 `replicas: <number>` 参数,或使用 `docker-compose scale` 命令。示例如下:
```bash
$ docker-compose up -d
$ docker-compose scale calculator=5
```
检查运行的容器:
```bash
$ docker-compose ps
```
#### 2. Docker Compose 在验收测试中的应用
Docker Compose 非常适合验收测试,能一键搭建和清理整个环境。若在生产中使用,验收测试与发布应用使用相同配置、工具和命令。以下以 `calculator` 项目为例,介绍两种验收测试方法。
##### 2.1 多容器环境的使用
Docker Compose 提供容器间的依赖关系,即容器共享同一网络,一个容器可被另一个容器访问。为项目添加 Redis 缓存,需进行以下操作:
###### 2.1.1 添加 Redis 客户端库到 Gradle
在 `build.gradle` 文件的 `dependencies` 部分添加以下配置:
```groovy
compile "org.springframework.data:spring-data-redis:1.8.0.RELEASE"
compile "redis.clients:jedis:2.9.0"
```
###### 2.1.2 添加 Redis 缓存配置
创建 `src/main/java/com/leszko/calculator/CacheConfig.java` 文件:
```java
package com.leszko.calculator;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
/** Cache config. */
@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {
private static final String REDIS_ADDRESS = "redis";
@Bean
public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
redisConnectionFactory.setHostName(REDIS_ADDRESS);
redisConnectionFactory.setPort(6379);
return redisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisTemplate redis
```
0
0
复制全文
相关推荐









