У меня был Gitlab на RaspberryPi несколько лет. Теперь я хочу переместить репозитории в Gitlab на основе докеров. Лучше всего со всеми настройками.
Я прочитал инструкции и попробовал следующее в отношении данных:
Я скопировал содержимое:
Я скопировал содержимое:
Я скопировал содержимое:
Итак, мой вопрос:
docker run \
--detach \
--rm \
--name gitlab \
--network host \
--volume ${PWD}/etc/gitlab:/etc/gitlab \
--volume ${PWD}/var/opt/gitlab:/var/opt/gitlab \
gitlab/gitlab-ce:latest
Если я создаю контейнер с помощью этой команды, сделайте что-нибудь с GITLAB, а не удалите контейнер и запустите новый: Это работает. В этом случае версии GITLAB одинаковы для обоих контейнеров.
Следуя подсказке c4f4t0r, я решил проблему следующим образом:
Поскольку восстановление резервной копии возможно только для точно такая же версия и тип (CE / EE) GitLab (Резервное копирование и восстановление GitLab), Я создал контейнер Gitlab gitlab/glitlab-ce:9.2.7-ce.0
и восстановил в нем бэкап.
/mnt/gitlab_ws/
├── backups/ <-- contains timestamp_9.2.7_gitlab_backup.tar
├── etc/gitlab/ <-- contains gitlab.rb; gitlab-secrets.json and ssh stuf
├── git-data/ <-- initially empty
└── var/opt/gitlab/ <-- initially empty
/
├── etc/gitlab/
├── mnt/gitlab_ws/backups/ <-- to be set in */etc/gitlab/gitlab.rb*
├── mnt/gitlab_ws/git-data/ <-- to be set in */etc/gitlab/gitlab.rb*
└── var/opt/gitlab/
./run_gitlab.sh 9.2.7
docker exec -it gitlab chown -R git:git /var/opt/gitlab/ /etc/gitlab /mnt/gitlab_ws/git-data /mnt/gitlab_ws/backups
./restore_backup.sh
Я связал том / var / opt / gitlab / на мой хост, чтобы можно было обновить Gitlab, запустив контейнер gitlab с более высокой версией. Помните, что обновление возможно только между минорными версиями (Обновить).
./run_gitlab.sh 9.3.0
После запуска более высокого уровня gitlab (статус контейнера становится «здоровым» - это может занять некоторое время) вы должны перенастроить gitlab:
./reconfigure_gitlab.sh
С этого момента вы можете повторять последние шаги, пока не достигнете желаемой версии. Вы также можете автоматизировать это;)
run_gitlab.sh
#/bin/bash
GITLAB_WS_PATH='/mnt/gitlab_ws'
if [ $# -eq 0 ]
then
TAG='latest'
else
TAG=$1-ce.0
fi
docker run \
--name gitlab \
--detach \
--restart always \
--network host \
--volume $GITLAB_WS_PATH/git-data/:/mnt/gitlab_ws/git-data \
--volume $GITLAB_WS_PATH/var/opt/gitlab:/var/opt/gitlab \
--volume $GITLAB_WS_PATH/etc/gitlab:/etc/gitlab \
--volume $GITLAB_WS_PATH/backups:/mnt/gitlab_ws/backups \
gitlab/gitlab-ce:${TAG}
restore_backup.sh
#!/bin/bash
DE="docker exec -it gitlab"
${DE} gitlab-ctl stop unicorn
${DE} gitlab-ctl stop sidekiq
${DE} gitlab-rake gitlab:backup:restore
${DE} gitlab-ctl reconfigure
${DE} gitlab-ctl restart
reconfigure_gitlab.sh
#!/bin/bash
DE="docker exec -it gitlab"
${DE} gitlab-ctl stop
${DE} gitlab-ctl reconfigure
${DE} gitlab-ctl start