Docker运行命令在主机上找不到目录

时间:2020-10-07 15:45:50

标签: docker gitlab gitlab-ci pact

尝试使用Pact映像作为Gitlab管道的一部分运行CLI命令。但是它失败了,因为Docker找不到目录(目标/页面)。下面是命令和错误的详细信息。

命令:

docker run pactfoundation/pact-cli:latest  broker publish target/pacts --consumer-app-version=$CI_COMMIT_SHORT_SHA --tag=$CI_COMMIT_REF_NAME --broker-base-url=http://localhost:9090

错误:

Error making request - Errno::ENOENT No such file or directory @ rb_sysopen - /target/pacts
 /usr/lib/ruby/gems/2.7.0/gems/pact_broker-client-1.29.1/lib/pact_broker/client/pact_file.rb:32:in `read', attempt 1 of 3

作为管道的一部分,我在docker命令之前运行了ls target/pacts命令,它表明该目录存在。

我尝试使用-v选项映射目标目录,如下所示,但它仍然会给出相同的错误。

更改的命令:

docker run -v $(pwd)/target:/target pactfoundation/pact-cli:latest  broker publish /target/pacts --consumer-app-version=$CI_COMMIT_SHORT_SHA --tag=$CI_COMMIT_REF_NAME --broker-base-url=http://localhost:9090

Gitlab管道步骤

contract-publishing:
  image: docker:latest 
  stage: contract-publish
  tags:
    - docker-privileged
  before_script:
    - export      
    - pwd
    - ls -al
    - ls target/pacts
  script:
    - >
      docker run -v $(pwd)/target:/target pactfoundation/pact-cli:latest 
      broker publish /target/pacts
      --consumer-app-version=$CI_COMMIT_SHORT_SHA
      --tag=$CI_COMMIT_REF_NAME
      --broker-base-url=http://localhost:9090

请帮助。

1 个答案:

答案 0 :(得分:0)

这似乎是与docker相关的问题-错误非常明显。我会取出协定图片并尝试执行以下操作:

docker run -v $(pwd)/target:/target debian:latest ls /target/pacts

如果这不起作用,则可能是您的gitlab设置中的变量扩展或其他配置不正确。