【问题标题】:Buildkite how to mount single files in docker agentBuildkite如何在docker代理中挂载单个文件
【发布时间】:2019-02-08 23:15:09
【问题描述】:

我想配置一个管道来运行我的测试。测试在 docker-compose 文件中。在我的 Buildkite 代理中,我无法挂载单个文件。

我想挂载源目录和单独的配置文件。我的 docker-compose 在其他环境中运行良好。

我该怎么办?

例如:

 docker run -it --rm -v /test.sh:/test.sh busybox cat /test.sh
 cat: read error: Is a directory

【问题讨论】:

  • 您的主机上是否存在/test.sh?我相信如果没有,那么 docker 只会在该路径上创建一个空目录,这可能就是您的 cat 失败的原因。
  • 是的。 Test.sh 确实存在
  • 你也可以试试。你可能会得到和我一样的结果。
  • 你用的是什么版本的docker?
  • Docker 版本 17.12.1-ce,构建 7390fc6

标签: buildkite


【解决方案1】:

Docker 代理使用其 Docker 容器中的 /buildkite 目录进行构建检查,但在 Docker 主机外部通常不存在该目录。因此,当您使用-v 时,它会尝试从不存在的主机上挂载/buildkite,因此您最终会得到一个挂载到/test.sh 的空目录。

一种解决方法是从主机挂载到/buildkite的目录中,例如:

docker run \
  -v /buildkite:/buildkite \
  -v /var/run/docker.sock:/var/run/docker.sock \
  buildkite/agent start ...

然后在您的构建中,您应该能够运行以下命令:

docker run -it --rm -v "$PWD/test.sh:/test.sh" busybox cat /test.sh

$PWD 将类似于 /buildkite/builds/agent123/pipeline123

如果您想在主机上使用 /buildkite 以外的其他内容,例如/usr/local/var/buildkite-agent,您通过相同的方式安装它,但您还需要配置代理以使用该路径:

docker run \
  -v /usr/local/var/buildkite-agent:/usr/local/var/buildkite-agent: \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e BUILDKITE_BUILD_PATH=/usr/local/var/buildkite-agent/builds \
  -e BUILDKITE_HOOKS_PATH=/usr/local/var/buildkite-agent/hooks \
  -e BUILDKITE_PLUGINS_PATH=/usr/local/var/buildkite-agent/plugins \
  buildkite/agent start ...

希望有帮助!

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 2016-08-01
    • 2018-04-15
    • 2017-07-04
    • 1970-01-01
    • 2016-03-12
    • 2020-05-16
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多