Конвейер, построенный на вершине GitLab, выходит из строя из-за постоянных томов докера - PullRequest
0 голосов
/ 05 января 2019

Я устанавливаю конвейер CI / CD в gitlab. Я сам размещал на своем сервере gitlab версии 11.4. Я использую оболочку для экземпляра gitlab-runner. В моем исходном коде есть файл docker-compose.yml, который имеет 8 различных контейнеров (mysql ,asticsearch, php, nginx, queue).

Когда я нажимаю новый код, он запускает определенный конвейер и останавливается со следующими ошибками

Running with gitlab-runner 11.6.0 (f100a208)
  on iZAPLabs runner 9a639f82
Using Shell executor...
Running on ip-10-250-142-190...
Fetching changes...
warning: could not open directory 'docker/.data/db/ginvoicing_dev/': Permission denied
warning: could not open directory 'docker/.data/db/mysql/': Permission denied
warning: could not open directory 'docker/.data/db/performance_schema/': Permission denied
warning: failed to remove docker/.data/redis/dump.rdb: Permission denied
warning: failed to remove docker/.data/db/ib_logfile0: Permission denied
warning: failed to remove docker/.data/db/ginvoicing_dev: Permission denied
warning: failed to remove docker/.data/db/ibdata1: Permission denied
warning: failed to remove docker/.data/db/auto.cnf: Permission denied
warning: failed to remove docker/.data/db/mysql: Permission denied
warning: failed to remove docker/.data/db/performance_schema: Permission denied
warning: failed to remove docker/.data/db/ib_logfile1: Permission denied
warning: failed to remove docker/.data/elasticsearch: Permission denied
warning: failed to remove docker/var/run/php: Permission denied
ERROR: Job failed: exit status 1
В каталоге

.data есть тома докеров, смонтированные в разных контейнерах. Но я не знаю, почему новый толчок пытается удалить их. Я даже пытаюсь использовать директиву «кеш». Но не повезло.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 января 2019

Полагаю, что сам gitlab runner работает как пользователь git или gitlab, gitlab-runner или что-то в этом роде (просто укажите whoami в разделе сценариев, чтобы определить, не знаете ли вы).
Большинство ваших док-контейнеров работают как пользователь root внутри контейнера. Поэтому каждый раз, когда вы используете том, который находится внутри вашего git-репозитория, разрешение будет меняться, когда ваши контейнеры изменяют данные. После того, как ваши контейнеры были остановлены, вы, пользователь gitlab, не можете очистить хранилище для новой работы.

Некоторые идеи (но, возможно, никто не решит вашу проблему)

а) добавьте своего пользователя бегуна gitlab в группу докеров б) попробуй запустить sudo git reset --hard c) mv расположение томов докера вне вашего репозитория, возможно, в / tmp (и не забудьте удалить их после завершения работы).

...