在 CI/CD 环境中,我们首先通过 Dockerfile 创建一个特定的 Wiremock Docker 容器:
FROM wiremock/wiremock:latest
COPY wiremock /home/wiremock
ENTRYPOINT ["/docker-entrypoint.sh", "--global-response-templating", "--verbose"]
是的,我注意到在本文的示例中提到了 --disable-gzip。我想,只是举个例子。正确。
我们将一些 Zip 文件复制到容器中。
响应标头包含:
检索到的文件大小为 3644。它不是有效的 Zip 文件。为什么?如何获取真实文件作为响应?
又可以工作了!
Dockerfile:
FROM wiremock/wiremock
COPY stubs /home/wiremock
zip 文件作为sample-zip.zip 放入stubs/__files 中。
stubs/mappings/mappingzip.json 包含:
{
"request": {
"method": "GET",
"url": "/fileserver/samplezip"
},
"response": {
"status": 200,
"bodyFileName": "sample-zip.zip",
"headers": {
"Content-Type": "application/zip",
"Content-Disposition": "attachment;filename=\"file.zip\""
}
}
}
另一个变体位于stubs/mappings/mappingzip2.json中:
{
"request": {
"method": "GET",
"url": "/fileserver/samplezip2"
},
"response": {
"status": 200,
"bodyFileName": "sample-zip.zip",
"headers": {
"Content-Type": "application/octet-stream",
"Content-Disposition": "attachment;filename=\"file2.zip\""
}
}
}
创建好的docker镜像放入Docker hub中。
标准的K8s部署文件为:
apiVersion: apps/v1
kind: Deployment
metadata:
name: wiremockdemo
spec:
replicas: 1
selector:
matchLabels:
app: wiremockdemo
template:
metadata:
labels:
app: wiremockdemo
spec:
containers:
- name: wiremockdemo
image: yourdockerhubaccount/wiremockdemo:development
imagePullPolicy: Always
ports:
- containerPort: 8080
服务文件:
apiVersion: v1
kind: Service
metadata:
name: wiremockdemo
spec:
ports:
- name: http
port: 9200
protocol: TCP
targetPort: 8080
selector:
app: wiremockdemo
type: LoadBalancer
这些命令将wiremock服务器作为Kubernetes服务启动:
浏览结果: