Создайте свой собственный сервис gitlab через докер

Git Docker GitLab

предисловие

git — текущая система управления версиями. Теперь, если вы не работаете в системе управления версиями git, вам почти неловко здороваться с людьми. Существует множество готовых git-сервисов в Интернете, которыми может пользоваться каждый, например, GitHub, известная как социальная сеть для программистов, и bitbucket, неброский и простой в использовании. Нет ничего плохого в том, что они предназначены для личного использования или для компаний, которые могут использовать их для использования с открытым исходным кодом. Однако, если его продвигать и использовать в отделе, это повлечет за собой проблему невозможности раскрытия кода или дополнительные расходы. Первоначально я использовал в отделе управление хранилищем кода вручную на сервере Linux. Разрешения выставить нельзя, а это очень неудобно. Так что я был очень обеспокоен.

Бывает, что компания gitlab предоставляет gitlab community edition, которая в принципе удовлетворяет потребности git-менеджмента в отделе. Gitlab предоставляет множество способов установки, но, конечно, наиболее удобным является способ установки докера, который подходит для таких людей, как я, которые не хотят слишком беспокоиться. Потратьте время, чтобы построить один. Я также прошел через несколько ям и записал шаги следующим образом, надеясь помочь другим людям, у которых есть такая потребность.

установка докера

Поскольку он основан на докере для установки gitlab, сначала нужно установить среду докера. Установил на базе centos 7. в соответствии сРуководство по официальному сайту

удалить старую версию докера

Старая версия докера называется docker или docker-engine, если старая версия уже установлена ​​в системе, ее нужно удалить. Удалите старую версию докера с помощью следующей команды

yum remove docker docker-common docker-selinux docker-engine

Добавить источник docker yum

Новый докер называется docker-ce.Если вы устанавливаете docker-ce в первый раз, вам необходимо установить источник yum для docker-ce. Используйте следующую команду, чтобы добавить источник yum для docker-ce

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test

Установить докер-се

Сначала смотрим все допустимые версии docker-ce

yum list docker-ce --showduplicates | sort -r

получить следующий список

docker-ce.x86_64         17.12.0.ce-1.el7.centos              docker-ce-test   
docker-ce.x86_64         17.12.0.ce-1.el7.centos               docker-ce-stable 
docker-ce.x86_64         17.12.0.ce-1.el7.centos               @docker-ce-stable
docker-ce.x86_64         17.12.0.ce-0.4.rc4.el7.centos         docker-ce-test   
docker-ce.x86_64         17.12.0.ce-0.3.rc3.el7.centos         docker-ce-test   
docker-ce.x86_64         17.12.0.ce-0.2.rc2.el7.centos         docker-ce-test   
docker-ce.x86_64         17.12.0.ce-0.1.rc1.el7.centos         docker-ce-test   
docker-ce.x86_64         17.11.0.ce-1.el7.centos               docker-ce-test   
docker-ce.x86_64         17.11.0.ce-0.4.rc4.el7.centos         docker-ce-test   
...
docker-ce.x86_64         17.03.1.ce-0.1.rc1.el7.centos         docker-ce-test   
docker-ce.x86_64         17.03.0.ce-1.el7.centos               docker-ce-stable

Отсюда видно, что последняя стабильная версия — 17.12.0.ce. Мы выбираем установку этой версии с помощью следующей команды

yum install docker-ce-17.12.0.ce

пользовательская конфигурация докера

По известным причинам доступ к центральному репозиторию Docker для загрузки образов Docker очень медленный. Чтобы получить лучший опыт, нам нужно настроить службу ускорения внутреннего зеркала.

По умолчанию docker настраивает рабочий каталог на каталог /var/lib/docker. Обычно этот каталог находится в корневом разделе Linux, а пространство ограничено, поэтому нам нужно настроить рабочий каталог докера на другой каталог.

Служба ускорения изображений может использовать службу ускорения изображений Alibaba Cloud. После регистрации в качестве пользователя Alibaba Cloud войдите на https://cr.console.aliyun.com и выберите службу ускорения изображения в консоли управления, после чего появится следующая информация. Красная часть здесь — это адрес вашего сервиса ускорения изображений Alibaba Cloud.

阿里云镜像加速服务

Чтобы настроить рабочий каталог по умолчанию и адрес репозитория образов docker, нам нужно изменить /etc/docker/daemon.json.

mkdir /etc/docker
vi /etc/docker/daemon.json

Введите следующее

{
  "graph":"/u1/docker",
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}

graph определяет каталог, в котором запускается Docker, аRegistry-Mirrors определяет адрес репозитория, из которого Docker получает образы.

запустить докер

Выполните следующую команду, чтобы запустить службу докеров

systemctl start docker

Выполните следующую команду, чтобы просмотреть информацию о докере

docker info

Вы можете увидеть следующую информацию

docker 信息

Вы можете видеть, что Docker Root Dir и RegistryMirrors стали содержимым, настроенным в /etc/docker/daemon.json.

установить гитлаб

скачать зеркало

Выполните следующую команду, чтобы загрузить образ версии сообщества gitlab из репозитория образов докеров.

docker pull gitlab/gitlab-ce:latest

Зеркало имеет более 1 г, так что это занимает некоторое время

сохранение данных

Поскольку данные контейнера не могут быть сохранены. Поэтому нам нужно использовать том докера для сопоставления сохраненных данных с каталогом операционной системы. Таким образом, даже если запущенный контейнер выйдет из строя, мы перезапустим новый контейнер, и данные в исходном контейнере не будут потеряны.

Мы создали каталог /u1/gitlab для сохранения данных в контейнере gitlab.

Подготовьтесь к отображению sshd

Кроме того, чтобы git использовал протокол ssh для работы с репозиторием git, мы сопоставляем порт 22 sshd хоста с контейнером. Измените порт sshd хоста на 15678. Из-за более строгого механизма безопасности Centos 7 это яма, и вам необходимо выполнить следующие шаги.

Отредактируйте файл /etc/ssh/sshd_config, раскомментируйте #Port 22 и измените номер 22 на 15678.

Выполните следующую команду, чтобы перезапустить службу sshd

systemctl restart sshd

Выполните следующую команду, чтобы сделать порт 15678 доступным для внешней службы. В противном случае удаленный вход по ssh невозможен.

semanage port -a -t ssh_port_t -p tcp 15678
firewall-cmd --permanent --add-port=15678/tcp
firewall-cmd --reload 

запустить гитлаб

docker run \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --volume /u1/gitlab/config:/etc/gitlab \
    --volume /u1/gitlab/logs:/var/log/gitlab \
    --volume /u1/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce

Здесь 443, 80 и 22 порты хоста напрямую пробрасываются в контейнер, и в то же время --volume /u1/gitlab/config:/etc/gitlab , --volume /u1/gitlab/logs :/var/log/gitlab , - -volume /u1/gitlab/data:/var/opt/gitlab Эти три параметра сохраняют конфигурацию, данные и журналы gitlab в файловой системе хоста.

админ настроить gitlab

войти в гитлаб

Дождавшись запуска контейнера докеров, перейдите по адресу http://ip, чтобы войти в интерфейс доступа к gitlab. Первый доступ для нас, чтобы изменить пароль администратора. Следующее

初始化 gitlab 管理员密码

设置后管理员密码后,就进入登录页面,输入用户名 root 和刚才设置的密码就进入了 gitlab 的控制台。 Как показано ниже

gitlab 管理员控制台

Создать группу

В gitlab есть три типа объектов: группа, проект и люди.

Чтобы облегчить управление, мы должны создавать проекты на основе групп. Проект — это репозиторий git. Создайте проект на основе группы, а затем добавьте пользователей в группу после установки соответствующих разрешений. Таким образом, пользователь имеет соответствующие разрешения для всех проектов в группе.

Нажмите ссылку «Создать группу», чтобы создать группу «Здоровье и медицинское развитие», как показано ниже.

gitlab 创建组

Создание пользователей (людей)

Нажмите ссылку «Добавить людей», чтобы создать пользователя «yanggch», как показано ниже.

gitlab 增加用户

Поскольку почтовая служба не настроена, почта для пароля инициализации пользователя еще не может быть отправлена. Нам нужно отредактировать пользователя и вручную установить пароль. Как показано ниже. Если пользователь забудет пароль, пополнение пароля также может быть выполнено здесь.

gitlab 修改用户信息

Добавить пользователя в группу

Для того, чтобы облегчить управление, пользователей необходимо добавить в соответствующие группы. Как показано на рисунке ниже, в интерфейсе управления группой щелкните имя группы, чтобы войти в интерфейс настройки пользователя группы. Добавьте только что созданного пользователя «yanggch» в группу «Health Care Development Group» и установите для него роль «Мастер». Только роли «Мастер» или «Владелец» могут отправлять обновления git.

image.png

Создать проект (проект)

При добавлении группы gitlab, чтобы сделать проект доступным для всех в группе, обратите внимание на создание проекта в группе. Как показано на рисунке ниже, проект «redis_util» создан в рамках «Группы развития здравоохранения и медицины».

gitlab 创建项目

После сборки проекта к нему могут получить доступ пользователи в группе.

Клиентский доступ

Установите git-клиент

Эта демонстрация устанавливает клиент git в Windows. Сначала загрузите установщик клиента git в соответствии с версией Windows. Вот я скачал

https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/Git-2.15.1.2-64-bit.exe

доступ к командной строке

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

右键菜单

Нажмите «Git Bash Here», чтобы войти в среду командной строки git. Мы увидим из проекта redis_util, что команда clone, основанная на протоколе http,

git clone http://7a45cd079bdc/healthcare_dev/redis_util.git

Здесь 7a45cd079bdc на самом деле является именем машины док-контейнера. При фактическом выполнении мы можем заменить эту строку на IP-адрес хоста, на котором расположен контейнер. Следующее

git clone http://10.110.2.50/healthcare_dev/redis_util.git

В этом случае вам будет предложено ввести логин и пароль для входа. Введите здесь имя пользователя и пароль пользователя, которого вы только что создали. Прежде чем использовать его, вам нужно войти в консоль gitlab под этим пользователем и изменить начальный пароль, чтобы использовать его.

gitlab http 权限验证

Появляется следующее приглашение, указывающее, что проект клонирования из gitlab выполнен успешно.

Cloning into 'redis_util'...
warning: You appear to have cloned an empty repository.

Вход без пароля

Общаться с гитлабом по http протоколу сейчас очень неудобно каждый раз вводить логин и пароль. Пользователь может настроить взаимодействие через ssh и добавить ключ ssh в список настроек sshkey пользователя.

Обратитесь к разделу «Командный доступ», чтобы войти в среду git bash. Выполните следующую команду, чтобы войти в каталог хранилища ключей ssh.

cd ~/.ssh

id_rsa.pub в каталоге — это открытый ключ для доступа по ssh. Если он не существует, выполните следующую команду для создания

ssh-keygen -t rsa

После возврата каретки будет сгенерирован файл id_rsa.pub.

Скопируйте содержимое файла в буфер обмена. Затем войдите в консоль gitlab с именем пользователя и паролем, созданными ранее. В интерфейсе ниже заполните текстовое поле содержимым файла id_rsa.pub.

配置用户 ssh key

После сохранения. Затем работайте с репозиторием git по протоколу ssh, и вам больше не нужно будет вводить имя пользователя и пароль. Следующее

免登陆操作 gitlab 仓库

нажать коммит

Сначала настройте имя пользователя и конфигурацию почтового ящика пользователя для текущего хранилища.

cd redis_util
git config --local user.name "yanggch"
git config --local user.email "yanggch@inspur.com"

Затем добавьте файл readme.txt в каталог redis_util, выполните следующую команду, чтобы отправить и отправить обновление на удаленный сервер gitlab.

#将新文件加入到版本管理
git add readme.txt
#提交
git commit -m"第一次提交"
#将当前分支 master 推送到远程仓库
git push
#以 master 分支为基础建立一个新的 dev 本地分支
git checkout -b dev
#将本地仓库分支推送到远程仓库,在远程仓库建立对应的 dev 分支
git push --set-upstream origin dev

Перейдите в консоль gitlab, чтобы проверить статус redis_util. Как показано ниже

redis_util 分支状况

На данный момент мы завершили создание сервера gitlab на уровне компании. Маленькие друзья могут плавно развиваться на этом.

Оригинальный текст был опубликован в брифе,оригинальная ссылка