如何在Docker容器中运行多个Postman/Newman集合
解决Docker中运行多个Postman Newman集合的问题
问题分析
你的配置存在两处关键问题:
- Dockerfile里的
ENTRYPOINT语法错误(参数间缺少空格,不符合Dockerfile语法规范) - 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
相关产品推荐
相关产品推荐

