Обновление Gitlab развернутого в Docker

GitLab+Docker
GitLab+Docker

Развернутые в Docker, и не только, инстансы Gitlab периодически требуют обновления.

Обновления приносят за собой полезные исправления безопасности, особенно если ваш Gitlab вывешен в общедоступную сеть, а так же новый функционал, который часто бывает полезен.

В статье расскажу как обновление происходит на примере Gitlab инстанса развернутого в Docker контейнере.

Для начала нужно определить текущую версию Gitlab, для этого заходим в веб интерфейс и в правом верхнем углу клацаем на меню с иконкой знака вопроса, затем на поле Help

Gitlab version
Определяем текущую версию Gitlab

Далее сверяемся с картой обновления, которую можно увидеть на официальном ресурсе по адресу: https://docs.gitlab.com/ee/update/#upgrade-paths

Находим в списке нашу версию, или ближайшую к нам в старшую сторону (в моем случае текущая версия 13.10, а самая ближайшая к моей 13.8.8, по этому обновляться будем от неё.

Перед обновлением настоятельно рекомендую сделать бэкап или снапшот (если используете виртуальную машину).

Обновление происходит следующим образом: вы удаляете старый контейнер и разворачиваете новый с новой версией образа. Дожидаетесь завершения миграций, и повторяете процедуру со следующим. Следуя версиям описанным на официальном сайте.

Для начала останавливаем и удаляем текущий контейнер, а заодно и образ если вы раньше устанавливали с тегом latest:

docker stop gitlab
docker rm gitlab
docker image rm gitlab/gitlab-ce:latest

Теперь запускаем образ новой версии, сделать можно либо использовав команду которой вы разворачивали gitlab в первый раз, изменив тег образа, например:

sudo docker run --detach \
  --log-opt max-size=1g \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --volume /srv/gitlab/registry:/var/opt/gitlab/registry \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.com/';" \
  gitlab/gitlab-ee:13.12.15-ee.0

Либо с помощью Docker-compose:

version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ee:13.12.15-ee.0'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com/'
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
      - '5000:5000'
      - '5001:5001'
      - '5005:5005'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
      - '/srv/gitlab/registry/config:/var/opt/gitlab/registry'
    logging:
      options:
        max-size: 1g

Выполнив затем из каталога с docker-compose.yml команду:

docker-compose up -d

Далее ждём запуска и прохождения всех миграций. Напомню лог запущенного контейнера можно смотреть с помощью команды

docker logs -f gitlab

Как только увидите привычный для рабочего контейнера лог заходим в гитлаб и проверяем версию всё тем же методом:

check update
Проверяем обновление

Начиная с версий 14 появятся миграции которые выполняются после запуска gitlab, проверить их выполнение и можно по адресу: https://gitlab.example.com/admin/background_migrations

background migrations
миграции

Обязательно проверьте работу всех ваших ci и пуш\пул репозиториев. Если всё хорошо — обновляем дальше повторив шаги начиная с остановки и удаления текущего контейнера.

Полезные ссылки по теме:

Оставьте первый комментарий

Отправить ответ

Ваш e-mail не будет опубликован.


*