Buildkite, как монтировать отдельные файлы в Docker Agent - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу настроить конвейер для запуска моих тестов. Тесты находятся в файле docker-compose. Внутри моего агента Buildkite я не могу смонтировать отдельные файлы.

Я хочу смонтировать исходный каталог и отдельные файлы конфигурации. Мой docker-compose отлично работает в других средах.

Что мне делать?

Например:

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

1 Ответ

0 голосов
/ 05 сентября 2018

Агент 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 ...

Надеюсь, это поможет!

...