获取镜像
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