You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器中运行多个Postman/Newman集合

解决Docker中运行多个Postman Newman集合的问题

问题分析

你的配置存在两处关键问题:

  1. Dockerfile里的ENTRYPOINT语法错误(参数间缺少空格,不符合Dockerfile语法规范)
  2. docker-compose的command未正确传递完整命令给sh -c,且未显式指定newman命令前缀

解决方案

方案1:修正Dockerfile与docker-compose配置

先修正Dockerfile的语法问题:

FROM postman/newman_alpine33
COPY . .
ENTRYPOINT ["sh", "-c"]

再调整docker-compose的command,将两个newman run命令整合成完整的shell命令串:

postman:
    build:
      context: ./
      dockerfile: Dockerfile-postman
    container_name: postmanTests
    command: >
      newman run "https://www.getpostman.com/collections/1" --env-var "base_url=http://service:8080" &&
      newman run "https://www.getpostman.com/collections/2" --env-var "base_url=http://service:8080"
    volumes:
      - container-volume:/var/lib/postman
    depends_on:
      - service

使用>符号折行编写命令串,确保sh -c能正确解析整个命令序列;由于你覆盖了官方镜像的默认ENTRYPOINT,必须显式添加newman前缀来调用命令。

方案2:无需自定义Dockerfile,直接在docker-compose中执行

如果不需要自定义镜像,可直接使用官方镜像,在command中用sh -c包裹完整命令:

postman:
    image: postman/newman_alpine33
    container_name: postmanTests
    command: sh -c '
      newman run "https://www.getpostman.com/collections/1" --env-var "base_url=http://service:8080" &&
      newman run "https://www.getpostman.com/collections/2" --env-var "base_url=http://service:8080"
    '
    volumes:
      - container-volume:/var/lib/postman
    depends_on:
      - service

额外注意事项

  • depends_on仅保证容器启动顺序,不确保service服务完全就绪;若需等待服务启动完成,可添加健康检查或使用wait-for-it等工具辅助。
  • 如果使用本地集合文件,需确保COPY . .或挂载的卷正确包含目标文件,路径无错误。

内容的提问来源于stack exchange,提问作者Elen Mouradian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:36:42