获取镜像
docker pull gitlab/gitlab-ce:11.8.0-ce.0
启动容器
使用如下脚本
#!/bin/bash
mkdir -p gitlab/etc
mkdir -p gitlab/log
mkdir -p gitlab/data
docker run \
-d \
-p 8443:443 \
-p 80:80 \
-p 8022:22 \
--restart always \
--name gitlab \
-v $PWD/gitlab/etc:/etc/gitlab \
-v $PWD/gitlab/log:/var/log/gitlab \
-v $PWD/gitlab/data:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce:11.8.0-ce.0
修改配置
vim gitlab/etc/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://10.0.1.181'
#配置ssh协议所使用的访问地址
gitlab_rails['gitlab_ssh_host'] = '10.0.1.181'
#配置ssh协议所使用的访问端口,此端口是run时22端口映射的8022端口
gitlab_rails['gitlab_shell_ssh_port'] = 8022
:wq #保存配置文件并退出
# 重启gitlab容器
docker restart gitlab
修改root登录密码
# 进入容器内部
docker exec -it gitlab /bin/bash
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为12345678
user.password='12345678'
# 保存
user.save!
# 退出
exit;
也可以 用 下面 命令直接查找 root 初始化密码 然后在页面手动修改
docker exec -it gitlab grep "Password:’ /etc/gitlab/initial_root_password"
登录web直接输入: 10.0.1.181即可,因为默认端口80被映射出来了。用户名 root ,密码 12345678,首次登陆提示修改密码,按照提示修改即可。
如果使用默认端口如果启动不了可以按照如下方式尝试
如果无法创建项目:进入到容器后执行 chmod 777 /tmp -R
如果无法ssh方式克隆:进入到容器后执行 mkdir /var/run/sshd
参考配置:
external_url 'http://git.abc.com'
gitlab_rails['gitlab_ssh_host'] = 'git.abc.com'
gitlab_rails['gitlab_shell_ssh_port'] = 22 # 此端口是run时22端口映射的222端口
常用操作
- 如果远程仓库地址发生改变需要修改本地仓库对应远程仓库的url时可以使用如下命令:git remote set-url origin <新的仓库URL>
- 备份:默认目录为/var/opt/gitlab/backups,自定义备份目录需要赋予目录git权限。
- 自定义目录的配置文件修改 /etc/gitlab/gitlab.rb
- gitlab_rails['manage_backup_path'] = true
- gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
- 手动备份
- 使用命令:gitlab-rake gitlab:backup:create
- 自定义目录的配置文件修改 /etc/gitlab/gitlab.rb
- 恢复备份:
- 首先把需要恢复的备份放到默认备份目录下
- 其次停止相关服务
- gitlab-ctl stop unicorn
- gitlab-ctl stop sideki
- 最后恢复:gitlab-rake gitlab:backup:restore
- 修改配置重新加载命令:gitlab-ctl reconfigure
- 扩展:定时操作(比如备份)
- 使用命令:crontab
-
crontab -e 0 3 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
- 说明
-
上述时间格式为:分时日月周 m: 表示分钟,可以是从0到59之间的任何整数。 h:表示小时,可以是从0到23之间的任何整数。 dom:表示日期,可以是从1到31之间的任何整数。 mon:表示月份,可以是从1到12之间的任何整数。 dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 user : 表示执行的用户。 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
-
-
- 使用命令:crontab
相关问题解决方案
1.找回root密码
gitlab-rails console
user = User.where(id: 1).first
user.password = '密码'
user.password_confirmation = '密码'
user.save!
理论上需要重启服务,实际不用重启也生效。
2.客户端克隆失败
2.1 已经添加公钥到gitlab并且失败
执行如下2个命令就可以解决:
eval "$(ssh-agent -s)"
ssh-add
说明:
ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,ssh-agent是个长时间持续运行的守护进程(daemon),设计它的唯一目的就是对解密的专用密钥进行高速缓存,ssh-agent启动时高速缓存当然是空的,里面不会有解密的专用密钥,在我们真能使用ssh-agent之前,首先还需要使用ssh-add命令把我们的专用密钥添加到ssh-agent的高速缓存中(ssh-add (私钥地址)),如果不加默认地址是~/.ssh/id_rsa