安装
本次安装环境在Centos7下进行
Docker版本为Docker version 20.10.8, build 3967b7d
- 搜索gitlab最新社区版镜像
docker pull gitlab/gitlab-ce:latest
- 运行Gitlab并运行容器
$ docker run -itd -p 443:443 -p 8443:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
命令解释:
-i 以交互模式运行容器,通常与 -t 同时使用命令解释:
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 8443:80 将容器内80端口映射至宿主机8443端口,这是访问gitlab的端口
-p 222:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /home/gitlab/config:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/home/gitlab/config目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
–restart always 容器自启动
–name gitlab 设置容器名称为gitlab-test
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID
重点:
本机的防火墙并未开启,如果防火墙已经开启,请将443,8443,222端口添加防火墙规则中防止无法访问。
- 进入容器内修改配置文件
docker exec -it gitlab /bin/bash
- 修改gitlab.rb
vi /etc/gitlab/gitlab.rb
# 这个文件是全注释掉了的,所以直接在首行添加如下配置
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口 (图片上拼写错误,正确的是external_url)
external_url 'http://192.168.32.28:8443'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.32.28'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 222
# 开启nginx监听端口
nginx['listen_port'] = 82
- 刷新配置及启动Gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
- 退出容器
exit
- 接下来使用浏览器访问下面页面即可
http://192.168.32.28:8443
如果出现访问失败的问题,大概有以下的问题
- 进入容器查看gitlab.rb和gitlab.yml文件是否配置成功
- 查看防火墙是否开放8443、222端口
- 可使用docker log命令查看容器是否启动完成
因为容器开启时间并不等于程序开启时间,有时容器已经启动而Gitlab依旧无法访问。此时如果检查配置文件没有问题,那么继续等待即可。
FAQ
正常GitLab启动之后第一次访问直接就可以输入密码进行注册。但是可能是因为我错误太多的缘故,我这边没有这步。那么我们就需要进入容器,找到配置文件,修改管理用户密码了。
- 进入刚才已经运行的容器
docker exec -it 7bdb4a6e49bb /bin/bash
- 输入命令修改密码
gitlab-rails console -e production
- 选择管理员用户
#id为1的是超级管理员
user = User.where(id: 1).first
- 修改密码为指定密码
user.password='l*******s'
- 保存,如果没有问题返回为True
user.save!