一、运行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'] = "tab609@aliyun.com" # 邮箱用户
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'] = 'tab609@aliyun.com'
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、创建一个群组
2、创建项目
这里我们创建一个属于dev群组的项目test,这样在dev群组下的用户就会有权限访问该项目仓库了
3、创建一个普通用户
必填项只有:姓名,用户名,邮箱,其他默认就好了,这里我们创建tab609用户
注:如果我们在第二步没有配置gitlab邮箱,那么新创建的用户将不会收到重置密码的邮件,root管理员可以帮该用户设置初始密码
管理区域 --> Users --> tab609 --> 点击编辑
root用户设置tab609用户的初始密码(密码长度必须大于等于8个字符),把密码告诉tab609用户,tab609就可以用管理员设置的初始密码登录了,首次登录gitlab会提示重置密码
4、把用户拉都群组
把tab609用户拉到dev群组,并给予主程序员权限,这样tab609用户就有权限访问dev群组下的仓库了
注:可以单独配置某用户在群组中的具体权限,不同权限,拥有对该群组下的仓库操作权限不一样。
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 文件的内容
如下图
6、克隆项目代码
到项目详情copy项目ssh url
$ git clone ssh://git@192.168.15.9: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 "tab609@qq.com"
# 针对某仓库设置,如只对test仓库配置特定的账号和邮箱(需要先进到test仓库目录再设置)
$ cd test
$ git config --local user.name "tab609"
$ git config --local user.email "tab609@qq.com"
# 针对某仓库设置账号的应用场景:比如我的电脑访问公司的仓库用户是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常用操作的命令可以查看阮一峰老师的博客