docker 安装gitlab以及使用
本文基于 docker容器 +阿里云ECS服务器及外网域名进行搭建
1.创建主机映射目录
用于映射docker容器的目录文件
[root@server-backend docker]# mkdir -p /docker/gitlib/config && mkdir -p /docker/gitlib/logs && mkdir -p /docker/gitlib/data
[root@server-backend docker]# ls /docker/gitlib/
config data logs
[root@server-backend docker]#
2.gitlab镜像拉取
docker pull gitlab/gitlab-ce
3.运行gitlab镜像
docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /docker/gitlib/config:/etc/gitlab -v /docker/gitlib/logs:/var/log/gitlab -v /docker/gitlib/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
4.配置
按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/docker/gitlib/config/gitlab.rb)。
# gitlab.rb文件内容默认全是注释
$ vim /docker/gitlib/config/gitlab.rb
编辑文件内容如下:
192.168.199.231
应该改为正确地址
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.199.231'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出
修改完成后重启gitlab容器
# 重启gitlab容器
$ docker restart gitlab
#或者进入容器中执行
gitlab-ctl reconfigure
gitlab-ctl restart
此时项目的仓库地址就变了。如果ssh端口地址不是默认的22,就会加上ssh:// 协议头 打开浏览器输入ip地址(因为我的gitlab端口为80,所以浏览器url不用输入端口号,如果端口号不是80,则打开为:ip:端口号)
默认的用户为root,密码可以查看initial_root_password
文件
[root@server-backend config]# cat /docker/gitlib/config/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: /w28USJrdUSrS2dTPsi73PmQ0Vu31i6BKDwcat60vqk=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
[root@server-backend config]#
https://blog.csdn.net/u012881331/article/details/84647261
5.配置ssl支持
https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
配置https 需要使用证书,此处使用阿里云的免费证书(证书一年有效期,过期需要再申请)
下载下来的证书放到/docker/gitlib/config/ssl
目录下
gitlab默认使用.crt格式的私钥,需要进行格式转换(.pem 直接改成crt即可)
修改 /etc/gitlab/gitlab.rb
中 external_url变为https
Edit the
external_url
in/etc/gitlab/gitlab.rb
:ini# note the 'https' below external_url "https://gitlab.example.com"
Disable Let’s Encrypt in
/etc/gitlab/gitlab.rb
:iniletsencrypt['enable'] = false nginx['redirect_http_to_https'] = true
完整的配置文件
ini# 配置https协议所使用的访问地址,不加端口号默认为443 external_url 'https://git.example.com' # 配置ssh协议所使用的访问地址和端口 gitlab_rails['gitlab_ssh_host'] = 'git.example.com' gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口 #配置ssl letsencrypt['enable'] = false nginx['redirect_http_to_https'] = true
Now, reconfigure GitLab:
shellsudo gitlab-ctl reconfigure
6.初始化用户
1.进入到gitlab 的ssh命令行
[root@server-backend ~]# docker exec -it gitlab /bin/bash
root@03cbecccf5c8:/#
2.登录到Gitlab服务器
root@03cbecccf5c8:/# gitlab-rails console production
#如果执行上面的指令提示 Usage: "rails console [options]" 则可能是Gitlab版本不一样,然后参数方式不一样,需要用如下方式
root@03cbecccf5c8:/# gitlab-rails console -e production
3.查询用户
> user = User.where(username:"root").first
=> #<User id:1 @root>
4.修改密码
> user.password = "qwer1234"
=> "qwer1234"
5.保存
> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 1f015e02-34bc-4b26-8e37-3101937b7ce1) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007fa6b83b1378 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
完整的执行过程如下
root@3b22cfb3d2bf:/# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
GitLab: 14.2.3 (2324101daeb) FOSS
GitLab Shell: 13.19.1
PostgreSQL: 12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.3.2)
irb(main):001:0> user = User.where(username:"root").first
=> #<User id:1 @root>
irb(main):003:0> user.password='12345678'
=> "12345678"
irb(main):004:0> user.save!
Enqueued ActionMailer::MailDeliveryJob (Job ID: f59cf638-e6e3-4200-b82f-136812e59fba) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:0x00007f2eb915dd78 @uri=#<URI::GID gid://gitlab/User/1>>]}
=> true
irb(main):005:0>
6.登录
账号:root 密码:qwer1234
6.配置邮箱登录
配置邮箱服务的用途 有合并请求时,邮件通知 账号注册时,邮件验证 修改密码时,通过邮件修改 配置步骤: 1.开启QQ邮箱的smtp服务(不建议使用163邮箱,发几次之后,就不能发送) 设置--》账户--》smtp--》密保验证--》验证成功返回一串字符串,形状如(ausdixersybgcgid) 保存返回的字符串 2.修改gitlab配置 vim /etc/gitlab/gitlab.rb 按/后输入smtp_enable,找到下面这一串文本,进行修改
```ini
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "36388961@qq.com"
gitlab_rails['smtp_password'] = "开通smtp时返回的字符"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
user['git_user_email'] = "36388961@qq.com"
gitlab_rails['gitlab_email_from'] = '36388961@qq.com'
```
按esc退出到命令行模式
之后:wq 保存并退出
gitlab-ctl reconfigure
3.测试邮件服务是否正常
gitlab-rails console
Notify.test_email('接收方邮件地址','邮件标题','邮件内容').deliver_now
按回车,测试发送。
复制代码
开通smtp时返回的字符:
7.创建项目
8.创建ssh密钥对
1、安装git工具。
2、运行git bash here 在弹出框中输入cd ~/.ssh/(如果弹出“No such file or directory“,则通过"mkdir ~/.ssh"语句创造.ssh文件夹)
3、输入“ssh-keygen -t rsa -C “gitlab的用户名” ”语句,然后回车,会出现设置密码,可以直接多次回车跳过,这样就生成秘钥了,可以在.ssh文件夹下看到id_rsa和id_rsa.pub两个文件,id_rsa.pub文件中的内容就是你需要的ssh秘钥。
ssh-keygen -t rsa -C "root"
