Docker 搭建 Gitlab 服务器

68 阅读3分钟

部署

 docker pull gitlab/gitlab-ce:latest



启动Gitlab容器 
# 启动容器
docker run \
 -itd  \
 -p 9980:80 \
 -p 9922:22 \
 -v /home/gitlab/etc:/etc/gitlab  \
 -v /home/gitlab/log:/var/log/gitlab \
 -v /home/gitlab/opt:/var/opt/gitlab \
 --restart always \
 --privileged=true \
 --name gitlab \
 gitlab/gitlab-ce 
 

 
 
 修改配置

vi /etc/gitlab/gitlab.rb
 
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.91.113'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.91.113'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
 
# 让配置生效
gitlab-ctl reconfigure





# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 
  gitlab:
    host: 192.168.124.194
    port: 9980 # 这里改为9980
    https: false


gitlab-ctl restart  
exit

修改root密码
# 进入容器内部
docker exec -it gitlab /bin/bash
 
# 进入控制台
gitlab-rails console -e production
 
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为lhx123456
user.password='lp123456'
# 保存
user.save!
# 退出
exit




### 浏览器访问 

路径访问:http://192.168.91.113:9980/

> # 机器配置要大于4g,否则很容易启动不了,报502

备份及恢复

备份配置

# 配置相关配置
# vim /etc/gitlab/gitlab.rb
# gitlab 访问域名
external_url 'http://192.168.8.127'  
# 备份配置
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/data/gitlab/backups" 
gitlab_rails['backup_archive_permissions'] = 0644  
# 备份有效期,单位为秒,比如如下7天 ,也可以根据自己实际情况来做异地转存
# 这里的有效期是针对本地存储,而非remote storage,比如阿里云的OSS
gitlab_rails['backup_keep_time'] = 604800

备份

gitlab-rake gitlab:backup:create

需要自己备份如下两个文件,恢复的时候也确保这两个位置有对应的问题

•/etc/gitlab/gitlab.rb

•/etc/gitlab/gitlab-secrets.json

远端备份

另外从上述备份记录中注意到 Uploading backup archive to remote storage ... skipped, 从7.4版本支持直接转存本地备份到远程(Starting with GitLab 7.4 you can let the backup script upload the ‘.tar’ file it creates

举例

gitlab_rails['backup_upload_connection'] = {
  'provider' => 'Aliyun',
  'aliyun_accesskey_id' => 'Access Key',
  'aliyun_secretekey_id' => 'Secret Key',
  'aliyun_oss_endpoint' => 'http://oss-cn-beijing-internal.aliyuncs.com',
  'aliyun_oss_bucket' => 'devops-backup',
  'aliyun_oss_location' => 'beijing'
}
# 对象存储bucket中的子目录
gitlab_rails['backup_upload_remote_directory'] = 'gitlab'

注意:一般备份不用长久保存,备份在OSS,为了节约成本,可以配置阿里云OSS bucket的生命周期,让其保留最近30天的备份即可

恢复

恢复的时候一定要选择相同版本的gitlab

root@test:~# gitlab-ctl stop unicorn 
root@test:~# gitlab-ctl stop sideki 
root@test:~# gitlab-ctl status # 停止数据写入服务

chmod 777 /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar #修改权限,如果是从本服务器恢复可以不修改


gitlab-rake gitlab:backup:restore BACKUP=1530156812_2018_06_28_10.8.4


gitlab-ctl start #启动gitlab

gitlab日常使用

一、新建项目

1、新建项目前,先创建项目所在的组(也就是说这个项目文件是保存在哪个组里) 选择 Admin area

2、选择 Groups——New Group

3、http://192.168.1.63/projects/new

4、选择 Create New Projcet ,然后在输入项目名称,同时在 namespace 里选择刚才创建的组 www.xuegod.cn web 代码

二、创建用户

1、选择 Admin area

2、选择 Users——New User

3、其中 Name 为对方的中文名,Username 是登录用户名,一般可以设置成邮箱的前缀,Email 为 公司邮箱。

4、项目现在默认即可,创建一个普通用户。

5、信息输入完成后,选择 Create user。 基本资料可以不用写。

三、重置新创建的用户的密码

登录邮件:jianmingbasic@163.com

点开设置自己的初始密码:密码必须 8 位以一上。我这里是: xuegodlinux生成密码后,登录:

方法 2: 修改密码

1、选择 Admin area -》用户-》选中用户-》编辑 设置新的密码是: xuegod.cn点保存后。

2、使用 jianmingbasic 登录 http://192.168.1.63/ 时, 还会弹出修改密码选项: 新密码:xuegodlinux

四、初除用户

当对方离职时候,为了安全起见,需要初除对方的 gitlab 权限,避克机密信息丢失,操作方法如下:

1、选择 Admin area ,选择 User,初除用户 。 我们这里先丌初除,后期要用

2、把用户 jianmingbasic 添加到 xuegod 组中,这样后期就可以提交这个组中项目的代码了。

五、在项目中添加一个文件 index.html

http://192.168.1.63/xuegod/xuegod-web

通过 docker-compose 快速部署 gitlab - 掘金 (juejin.cn)