Настройки инстанса в контейнере — это настройки установки пакетом для ОС Linux, к которым добавляется слой контейнера: где лежит файл конфигурации, какие переменные читает стартовый скрипт и какие порты публикует хост.
Применение изменений конфигурации
Файл конфигурации — /etc/gitlab/gitlab.rb на томе конфигурации, то есть /srv/code/config/gitlab.rb на хосте. Правьте его на хосте или в контейнере:
docker exec -it code editor /etc/gitlab/gitlab.rbПримените изменение, не останавливая контейнер:
docker exec code gitlab-ctl reconfigureПерезапуск даёт тот же результат: настройка выполняется при каждом запуске контейнера.
docker restart codeЯзык интерфейса, почта, число рабочих процессов и срок хранения резервных копий — это те же настройки, что и при установке на хост; что делает каждая из них, описано в разделе «Настройка после установки».
Переменные запуска
Стартовый скрипт читает переменные при запуске контейнера, поэтому для изменения любой из них контейнер создают заново с теми же томами.
| Переменная | Назначение |
|---|---|
GITLAB_OMNIBUS_CONFIG | Содержит строки конфигурации, которые вычисляются до чтения /etc/gitlab/gitlab.rb. Настройка из файла переопределяет ту же настройку из переменной. |
GITLAB_SKIP_RECONFIGURE | Со значением true на уже настроенном инстансе запуск пропускает gitlab-ctl reconfigure, и изменения конфигурации остаются неприменёнными до следующей настройки. |
GITLAB_SKIP_PG_UPGRADE | Со значением true запуск не выполняет gitlab-ctl pg-upgrade, и база данных остаётся на текущей версии PostgreSQL. |
GITLAB_DISABLE_OPENSSH | Со значением true запуск не готовит сервис sshd, и Git по SSH недоступен. |
GITLAB_SKIP_TAIL_LOGS | Со значением true логи сервисов не выводятся в вывод контейнера и остаются на томе логов. |
GITLAB_PRE_RECONFIGURE_SCRIPT | Если переменная задана, её значение выполняется как команда оболочки до запуска сервисов. |
GITLAB_POST_RECONFIGURE_SCRIPT | Если переменная задана, её значение выполняется как команда оболочки после шага с PostgreSQL. |
GITLAB_ALLOW_SHA1_RSA | Со значением true конфигурация sshd принимает алгоритм ключа хоста и тип открытого ключа ssh-rsa. |
OPENSSL_FORCE_FIPS_MODE | Значение переменной записывается в окружение сервиса sshd. |
Ключи хоста SSH
Ключи хоста RSA, ECDSA и Ed25519 генерируются при первом запуске в /etc/gitlab и связываются символическими ссылками с /etc/ssh, откуда их читает инстанс. Ключи лежат на томе конфигурации, поэтому контейнер, пересозданный при обновлении, сохраняет их, и клиенты Git видят прежний ключ хоста. Новый том конфигурации означает новые ключи, и каждый клиент при следующем подключении сообщит о смене ключа хоста.
Git по SSH работает с ключами, которые пользователи добавляют в веб-интерфейсе: sshd в контейнере слушает порт 22, принимает только пользователя git, аутентификация по паролю отключена.
Ресурсы и рабочие процессы
Контейнеру доступна память хоста, если при создании она не ограничена параметром --memory, и ему нужен параметр --shm-size 256m, как описано в разделе «Требования».
На хосте с 6–8 ГБ RAM закрепите число рабочих процессов, чтобы его не подбирала автонастройка. Настройки задаются в /etc/gitlab/gitlab.rb или в GITLAB_OMNIBUS_CONFIG, их значения описаны в разделе «Настройка после установки»:
puma['worker_processes'] = 2
sidekiq['concurrency'] = 10Порты и файрвол хоста
Порты 80, 443 и 22 публикуются при создании контейнера. Порт хоста может отличаться от порта контейнера, например -p 8080:80 -p 8443:443 -p 2222:22.
В адресе инстанса указывается порт хоста, который открывают пользователи; порт SSH, который веб-интерфейс показывает в URL для клонирования, задаёт параметр gitlab_rails['gitlab_shell_ssh_port'], описанный в разделе «Порт SSH».
Откройте опубликованные порты на хосте для сетей пользователей; команды для firewalld и ufw приведены в разделе «Настройка после установки». Docker публикует порты собственными правилами iptables, поэтому после каждого изменения правил файрвола проверяйте порты с рабочей станции:
curl -sI http://<HOSTNAME>/ | head -n 1
ssh -T -p 22 git@<HOSTNAME>Расширенный поиск (OpenSearch)
Подключение к OpenSearch — параметр gitlab_rails['fe_search'] и правило маршрутизации Sidekiq, описанные в разделе «Расширенный поиск (OpenSearch)». Добавьте их в /etc/gitlab/gitlab.rb в томе с конфигурацией или в GITLAB_OMNIBUS_CONFIG, затем перезапустите контейнер или выполните docker exec code gitlab-ctl reconfigure.