docker搭建Gitlab 服务器

[toc]

警告!

⚠️ 警告

个人纯属爱好,搭建个人的gitlab服务器,gitlab很消耗内存

前言

我需要在服务器上面部署一个仓库,方便提交,而且供主机和服务器之间的数据传输

  • 系统:centos

安装镜像

🇫🇮查找镜像

# 查找Gitlab镜像
docker search gitlab

🤏拉取Gitlab镜像

docker pull gitlab/gitlab-ce:latest

🌠启动docker镜像

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

🎈 解释:

命令描述
-i以交互模式运行容器,通常与 -t 同时使用命令解释
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d后台运行容器,并返回容器 ID
-p 9980:80将容器内 80 端口映射至宿主机 9980 端口,这是访问 gitlab 的端口
-p 9922:22将容器内 22 端口映射至宿主机 9922 端口,这是访问 ssh 的端口
-v /home/gitlab/etc:/etc/gitlab将容器 / etc/gitlab 目录挂载到宿主机 / usr/local/gitlab-test/etc 目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
--restart always容器自启动
--privileged=true让容器获取宿主机 root 权限
--name gitlab设置容器名称为 gitlab
gitlab/gitlab-ce镜像的名称,这里也可以写镜像 ID

🤳修改配置

#进容器内部
docker exec -it gitlab /bin/bash
 
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb

❤️ 加入如下

#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.124.194'

#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.124.194'

#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

🤏让配置生效

gitlab-ctl reconfigure

⚠️ 注意不要重启,/etc/gitlab/gitlab.rb文件的配置会映射到gitlab.yml这个文件,由于咱们在dockeropen in new window中运行,在gitlab上生成的http地址应该是http://192.168.124.194:9980,所以,要修改下面文件

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

image-20220924225234548

🤏让配置生效 并且退出容器

gitlab-ctl reconfigure
exit

浏览器访问

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

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

  • 第一次访问,会让修改root密码
  • 修改后以root用户登录即可

修改密码

进入容器内部:

docker exec -it gitlab /bin/bash

进入控制台:

gitlab-rails console -e production

查询id为1的用户,id为1的用户是超级管理员:

user = User.where(id:1).first

image-20220924230110134

修改密码为1234

user.password='1234' 

保存:

user.save!

退出:

exit

image-20220924230332131

重置管理员密码

进入docker gitlab 容器中

docker exec -it gitlab(容器名字) bash

进入gitlab 控制台

gitlab-rails console -e production   #可能会等好几秒钟 

搜索用户

#这里提供两种搜索方式  通过id
user = User.where(id:1).first
#或者 通过电子邮件搜索  或者用户名
user = User.find_by(email:'admin@example.com')

asdf

修改密码

⚠️ 注意:密码不能设置太简单,数据库没办法通过

#注意这两个选项都得设置,1234为你要设置的密码
user.password ='1234'
user.password_confirmation ='1234'

保存退出:wq

user.save!
exit

image-20220924232113215

登陆成功😘😘image-20220924233008364