У меня gitlab-runner зарегистрирован следующим образом:
gitlab-runner register -n \
--url http://m2m-tele.com/ \
--registration-token ru7i9G9R-3BJn2RXKdtv \
--executor shell \
--tag-list warehouse
--description "warehouse"
У меня есть проект со следующим .gitlab-ci.yml
:
before_script:
- docker info
build_image:
script:
- docker stop warehouse warehouse_redis
- docker-compose build
- docker-compose up -d
tags:
- warehouse
Мой docker-compose.yml
файл:
version: "2"
services:
warehouse:
build: .
ports:
- "8085:8085"
container_name: warehouse
image: warehouse
volumes:
- ./data/warehouse:/data
tty: true
redis:
image: redis:4-alpine
container_name: warehouse_redis
volumes:
- ./data/redis:/data
Мой конвейер gitlab-runner проходит при первом запуске проекта.Затем происходит сбой со следующей ошибкой:
Running with gitlab-runner 11.5.0 (3afdaba6)
on warehouse bdb8c3c8
Using Shell executor...
Running on ubuntu-s-1vcpu-1gb-fra1-01...
Fetching changes...
warning: failed to remove data/warehouse
warning: failed to remove data/redis
ERROR: Job failed: exit status 1
Это происходит из-за того, что я присоединяюсь к контейнеру и выполняю некоторые операции, такие как сохранение данных в базе данных Redis, которая меняет владельца папки data
на root
.Если я сделаю следующее:
sudo ls -l /home/gitlab-runner/builds/aeb6bff3/0/my_project_path
, конвейер проходит хорошо, но удаляет все данные.Однако мне нужно сохранить данные без изменений, так как они настроены в моем файле docker-compose.yml
с помощью volumes
.Итак, у меня есть два вопроса: 1. Должен ли я установить пользователя в docker-compose.yml или где-то еще при использовании gitlab's ci / cd?2. Обычно я хочу хранить данные между толчками для проецирования.Как я могу предотвратить удаление данных с gitlab-runner?
EDIT.Решил это, разместив тома по абсолютным путям.