GitLab安装和配置(Docker)

Posted nikeylee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitLab安装和配置(Docker)相关的知识,希望对你有一定的参考价值。

GitLab

  • GitLab是用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

 

一、Docker下安装GitLab

1、拉取gitlab、redis、postgresql的docker镜像

gitlab依赖redis和postgresql

docker pull sameersbn/redis
docker pull sameersbn/postgresql
docker pull gitlab/gitlab-ce:latest

 

2、创建postgresql容器

  • 数据库用户名DB_USER:gitlab
  • 数据库密码DB_PASS:password
  • 本地与容器映射的路径:-v /home/root/opt/postgresql/data:/var/lib/postgresql
docker run --name postgresql -d --privileged=true -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' -e 'DB_EXTENSION=pg_trgm' -v /home/root/opt/postgresql/data:/var/lib/postgresql sameersbn/postgresql

 

3、创建redis容器

本地与容器映射的路径:-v /home/root/opt/redis/data:/var/lib/redis

docker run --name redis -d --privileged=true -v /home/root/opt/redis/data:/var/lib/redis sameersbn/redis

 

4、创建gitlab容器

  • 指定主机地址 --hostname:192.168.171.126
  • 本机与容器的端口映射:-p 10022:22 -p 8899:80
  • 修改环境变量的取值:
    • 端口号:-e 'GITLAB_PORT=8899' -e 'GITLAB_SSH_PORT=10022'
    • 主机地址:-e 'GITLAB_HOST=192.168.171.126'
  • 本地与容器映射的路径:-v /home/root/opt/gitlab/data:/home/git/data gitlab/gitlab-ce
docker run --name gitlab -d --link postgresql:postgresql --link redis:redis --hostname 192.168.171.126 -p 10022:22 -p 8899:80 -e 'GITLAB_PORT=8899' -e 'GITLAB_SSH_PORT=10022' -e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' -e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' -e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' -e 'GITLAB_HOST=192.168.171.126' -e 'SMTP_AUTHENTICATION=login' -v /home/root/opt/gitlab/data:/home/git/data gitlab/gitlab-ce

 

5、浏览器访问

1)访问地址:http://192.168.171.126:8899

初次访问,需要等待一段时间,gitlab容器启动和初始化较慢;启动成功后,如下图所示;

如果访问时,报错"Whoops, GitLab is taking too much time to respond.",首先检查是否系统资源不足,如内存不足;资源充足下,是可以正常访问的。

 

2)设置root用户的新密码

密码:Aa123456(密码要有8位,包含大小写,否则可能设置失败,gitlab用户密码限制:Minimum password length (number of characters))

 

3)使用root用户名登录

登录账户名:root

密码:Aa123456

 

6、重启虚机后,再次启动gitlab命令

docker start postgresql
docker start redis
docker start gitlab

 

二、创建和配置GitLab新用户

假设使用自己的qq邮箱给新注册的用户发送注册成功邮件,需要先开启qq邮箱账户的POP3/SMTP服务;

如果没配置,会导致新用户接收不到注册邮件,不能完成设置密码,新用户无法登录使用;

 

1、配置GitLab的邮件发送

1)先开启QQ邮箱的POP3/SMTP服务

QQ邮箱-->设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启POP3/SMTP服务,弹出如下提示,按照提示去发送短信;

 

短信发送成功后,点击“我已发送”,显示如下截图:保存授权码信息,后续配置到gitlab配置文件中;

 

2)修改gitlab的配置文件:/etc/gitlab/gitlab.rb

进入docker容器

docker exec -it gitlab /bin/bash

 

修改配置文件

vi /etc/gitlab/gitlab.rb
  •  smtp_user_name:修改为QQ邮箱的账号
  • smtp_password:修改为配置的授权码
  • gitlab_email_from:修改为QQ邮箱的账号
  • 其他配置保持不变
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "******@qq.com"
gitlab_rails['smtp_password'] = "授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '******@qq.com'

 

在gitlab容器内执行如下命令,让配置生效

gitlab-ctl reconfigure

 

退出gitlab容器,执行命令重启gitlab容器

docker restart gitlab

 

2、创建GitLab新用户

1)gitlab启动成功后,访问http://192.168.171.126:8899

使用root/Aa123456登录

点击扳手🔧,新建用户(邮箱一定要输入有效的邮箱,否则新用户接收不到注册成功的邮件,无法重置账户密码,就无法登录gitlab);

 

新用户新建成功后,新用户会收到如下邮件,点击click here去重置用户密码,重置成功后,即可访问gitlab

 

如果邮件中点击click here打不开页面,是因为自己搭建的gitlab的默认端口已经修改了,只要在访问地址后面加上端口号8899,即可访问;

 

3、配置新用户的SSH Keys

1)先下载和安装Git

下载地址:https://git-scm.com/downloads

本文使用Windows版本:2.31.1

点击Git-2.31.1-64-bit.exe,进行安装;

 

2)在Git Bash窗口输入命令,并一路回车,生成密钥

ssh-keygen -t rsa -C "XXXX@qq.com"

 

3)用记事本打开公钥,并复制

公钥目录:C:\\Users\\用户名\\.ssh\\id_rsa.pub

 

4)添加公钥

登录GitLab网站,右上角头像 -> Preferences -> SSH Keys中,添加复制的文本。添加成功后,如下图:

 

三、新建GitLab代码仓库

Projects-->Create blank project

 

按照提示,在本地执行以下命令,设置提交代码的用户名和邮箱地址

Git global setup:

git config --global user.name "test"
git config --global user.email "4XXXXXX0@qq.com"

 

Create a new repository或者Push an existing folder:可以创建一个新的空代码仓库,然后将本地代码提交到该代码仓库上;也可以直接将本地的项目git初始化后,再推到gitlab服务器的方式来创建一个代码仓库;

这里使用的连接方式是HTTP,没有使用SSH,是因为在push的时候,会默认使用当前系统用户作为用户名来连接gitlab服务器(本文创建的gitlab新用户是test,系统登录用户是XXX,是不一致的),如果gitlab上的登录用户名和本地用户名不一致,输入密码后,会登录失败,导致无法操作远程代码库;

Create a new repository执行如下命令,创建一个空的代码仓库;

git clone http://192.168.171.126:8899/test/shopping.git
cd shopping
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Push an existing folder执行如下命令,将本地项目推送到gitlab服务器的方式来创建一个代码仓库;

cd existing_folder
git init
git remote add origin http://192.168.171.126:8899/test/shopping.git
git add .
git commit -m "Initial commit"
git push -u origin master

 

实际本地命令操作截图:

 

代码仓库创建成功后截图:

 

 

以上是关于GitLab安装和配置(Docker)的主要内容,如果未能解决你的问题,请参考以下文章

GitLab安装和配置(Docker)

GitLab安装和配置(Docker)

docker下gitlab安装配置使用(完整版)

GitLab中文社区版Docker镜像安装启动及配置

docker安装与配置gitlab详细过程

docker安装配置gitlab详细过程