我想配置一个管道来运行我的测试。测试在 docker-compose 文件中。在我的 Buildkite 代理中,我无法挂载单个文件。
我想挂载源目录和单个配置文件。我的 docker-compose 在其他环境中运行良好。
我应该怎么办?
例如:
docker run -it --rm -v /test.sh:/test.sh busybox cat /test.sh
cat: read error: Is a directory
我想配置一个管道来运行我的测试。测试在 docker-compose 文件中。在我的 Buildkite 代理中,我无法挂载单个文件。
我想挂载源目录和单个配置文件。我的 docker-compose 在其他环境中运行良好。
我应该怎么办?
例如:
docker run -it --rm -v /test.sh:/test.sh busybox cat /test.sh
cat: read error: Is a directory
Docker 代理使用/buildkite
它的 Docker 容器中的目录进行构建检查,但通常在 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 ...
希望有帮助!