Wiremock (docker) - 检索到的 Zip 响应要大得多

问题描述 投票:0回答:1

在 CI/CD 环境中,我们首先通过 Dockerfile 创建一个特定的 Wiremock Docker 容器:

FROM wiremock/wiremock:latest
COPY wiremock /home/wiremock
ENTRYPOINT ["/docker-entrypoint.sh", "--global-response-templating", "--verbose"]

是的,我注意到在本文的示例中提到了 --disable-gzip。我想,只是举个例子。正确。

我们将一些 Zip 文件复制到容器中。

响应标头包含:

  • Content-Type=application/zip 或 application/octet-stream?
  • Content-Disposition:附件;文件名=extract.zip
  • 内容长度:2094

检索到的文件大小为 3644。它不是有效的 Zip 文件。为什么?如何获取真实文件作为响应?

docker wiremock
1个回答
0
投票

又可以工作了!

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服务启动:

  • kubectl apply -fwiremockdemo-deployment.yaml
  • kubectl apply -fwiremockdemo-service.yaml

浏览结果:

  • http://localhost:9200/__admin/mappings
  • http://localhost:9200/__admin/files
  • http://localhost:9200/fileserver/samplepdf
  • http://localhost:9200/fileserver/samplezip1
  • http://localhost:9200/fileserver/samplezip2
© www.soinside.com 2019 - 2024. All rights reserved.