![](/img/trans.png)
[英]Using spring-boot:build-image in Gitlab-ci.yaml Pipeline to create a docker image
[英]Running Docker image of Postman from Gitlab CI pipeline
我想從 Gitlab CI 管道中的 Docker 圖像運行Postman集合。 Docker 套接字文件已為 gitlab-ci-runner 安裝,因此運行程序可以訪問 docker 服務器。
這是來自.gitlab-ci.yaml 的工作定義
postman:
image: docker:20.10.14
stage: schedule
only:
- schedules
before_script: []
script:
- env
- docker run -t -v $CI_PROJECT_DIR:/etc/newman postman/newman run postman_collection.json
gitlab CI runner 的控制台 output 如下所示:
$ docker run -t -v $CI_PROJECT_DIR:/etc/newman postman/newman run postman_collection.json
error: collection could not be loaded
unable to read data from file "postman_collection.json"
ENOENT: no such file or directory, open 'postman_collection.json'
文件存在。 我什至試過
docker run --rm -it -v $PWD:/etc/newman --entrypoint sh postman/newman
從我的本地主機控制台並手動運行它。 這一切都在那里。 我錯過了什么?
Docker 套接字文件已為 gitlab-ci-runner 安裝
這里的問題是,在您正在與主機 docker 守護進程(即,當主機 docker 套接字安裝在作業中時)交談的場景中,當您將卷參數傳遞給docker run
-v /source/path:/container/path
參數的/source/path
部分指的是主機文件系統,而不是作業容器的文件系統。
可以這樣想:主機 docker 守護程序不知道它的套接字安裝在作業容器內。 因此,當您以這種方式運行docker
命令時,就好像您在運行器主機上運行docker
命令一樣!
因為作業命令中的$PWD
和$CI_PROJECT_DIR
評估為作業容器中的路徑(並且此路徑不在運行器主機文件系統上),所以卷安裝將無法按預期工作。
此限制在Docker 套接字綁定文檔的限制中注明:
將源存儲庫中的文件和目錄共享到容器中可能無法按預期工作。 卷掛載是在宿主機的上下文中完成的,而不是構建容器
這里最簡單的解決方法可能是使用 postman postman/newman
作為您的image:
而不是docker
。
myjob:
image:
name: postman/newman
entrypoint: [""]
script:
- newman run postman_collection.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.