docker搭建gitlab

一、运行gitlab

$ docker run --detach \
  --publish 8443:443 --publish 8080:80 --publish 2222:22 \
  --name=gitlab \
  --restart=always \
  --volume /data/gitlab/config:/etc/gitlab \
  --volume /data/gitlab/logs:/var/log/gitlab \
  --volume /data/gitlab/data:/var/opt/gitlab \
  --privileged=true \
  gitlab/gitlab-ce-zh:11.1.4

二、修改配置文件

配置web和ssh访问

$ vim /data/gitlab/config/gitlab.rb

external_url 'http://192.168.15.9'    # 宿主机ip,设置web访问(http://192.168.15.9:8080)
gitlab_rails['gitlab_ssh_host'] = '192.168.15.9'    # 宿主机ip,设置仓库的访问
gitlab_rails['gitlab_shell_ssh_port'] = 2222    # 容器ssh 22端口映射到宿主机的端口2222

配置邮箱(可选),配置了邮箱:

1、新增gitlab用户的时候,会用该邮箱发送重置用户密码到用户邮箱
2、忘记管理员root密码的时候,也可以通过该邮箱找回密码

$ vim /etc/gitlab/gitlab.rb

# 以下配置aliyun邮箱为例
#配置下面,需要配置smtp_tls 
#注意gitlab_rails['smtp_tls'] 这个是设定为true
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.aliyun.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"    # 邮箱用户
gitlab_rails['smtp_password'] = "youpassword"           # 邮箱密码
gitlab_rails['smtp_domain'] = "smtp.aliyun.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
#配置邮箱来源,以及展示的名称
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

三、重启gitlab

# 方法一重启容器
$ docker restart gitlab

# 方法二在容器中执行重启gitlab命令
$ docker exec gitlab gitlab-ctl reconfigure

访问web:http://192.168.15.9:8080
注:首次打开web登录界面需要先设置管理员root账号的密码(密码至少需要8个字符)

四、创建一个仓库测试是否搭建成功

以下1-4步用管理员root账号登录gitlab进行操作

1、创建一个群组

docker搭建gitlab_第1张图片

2、创建项目

这里我们创建一个属于dev群组的项目test,这样在dev群组下的用户就会有权限访问该项目仓库了
docker搭建gitlab_第2张图片

3、创建一个普通用户

必填项只有:姓名,用户名,邮箱,其他默认就好了,这里我们创建tab609用户
docker搭建gitlab_第3张图片

注:如果我们在第二步没有配置gitlab邮箱,那么新创建的用户将不会收到重置密码的邮件,root管理员可以帮该用户设置初始密码

管理区域 --> Users --> tab609 --> 点击编辑

编辑
root用户设置tab609用户的初始密码(密码长度必须大于等于8个字符),把密码告诉tab609用户,tab609就可以用管理员设置的初始密码登录了,首次登录gitlab会提示重置密码

docker搭建gitlab_第4张图片

4、把用户拉都群组

把tab609用户拉到dev群组,并给予主程序员权限,这样tab609用户就有权限访问dev群组下的仓库了
docker搭建gitlab_第5张图片

注:可以单独配置某用户在群组中的具体权限,不同权限,拥有对该群组下的仓库操作权限不一样。

5、设置tab609用户的ssh key

以下5-7步用tab609用户登录gitlab进行操作

# step1: 先在要克隆代码的主机上生成ssh key
$ ssh-keygen    # 一直按 Enter 键确认即可,会在执行当前 ssh-keygen 命令的用户目录下生成相应文件(ls ~/.ssh)

# step2:把公钥添加到gitlab的tab609用户的ssh密钥中
$ cat ~/.ssh/id_rsa.pub    # 复制 ~/.ssh/id_rsa.pub 文件的内容
如下图

docker搭建gitlab_第6张图片

6、克隆项目代码

到项目详情copy项目ssh url
docker搭建gitlab_第7张图片

$ git clone ssh://[email protected]:2222/dev/test.git
Cloning into 'test'...
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 17 (delta 1), reused 5 (delta 0)
Receiving objects: 100% (17/17), done.
Resolving deltas: 100% (1/1), done.

# 我们需要先设置以下git的账号和邮箱,可以设置全局的,也可以只针对某仓库local设置
# 针对全局
$ git config --global user.name "tab609"
$ git config --global user.email "[email protected]"

# 针对某仓库设置,如只对test仓库配置特定的账号和邮箱(需要先进到test仓库目录再设置)
$ cd test
$ git config --local user.name "tab609"
$ git config --local user.email "[email protected]"

# 针对某仓库设置账号的应用场景:比如我的电脑访问公司的仓库用户是A,而我个人的github仓库用户是B,那么我们就需要设置局部的git账号而并非全局了

7、提交代码到仓库

# 已配置好git的账号,进入到仓库目录
$ cd test

# 我们touch一个空的hello文件
$ touch hello

$ ls
hello  README.md

$ git add hello
$ git commit -m "touch hello file"
$ git push origin master

# 到gitlab页面就可以看到这次的提交了

git常用操作的命令可以查看阮一峰老师的博客

你可能感兴趣的:(CI,&,CD)