侧边栏壁纸
博主头像
panda的个人博客博主等级

You have to feel free before you can pursue it.

  • 累计撰写 11 篇文章
  • 累计创建 30 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

docker搭建gitlab

Panda
2024-03-05 / 0 评论 / 1 点赞 / 37 阅读 / 7281 字
温馨提示:
本文最后更新于 2024-03-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

基于docker搭建gitlab

前段时间基于docker搭建了一个gitlab容器用于存储自己写的小代码

今天将搭建流程给分享出来

前期准备工作

  1. 准备一台至少2核心4G的服务器,或者云服务器

    image-20240306092131875

  2. 安装好docker环境

    • Docker 安装文档:https://docs.docker.com/engine/install/

      ubuntu@PANDA:~$ sudo docker --version
      Docker version 25.0.3, build 4debf41
      
  3. 国内配置镜像(有科学环境忽略此步)

    1. 打开/创建 /ect/docker/daemon.json文件

    2. 添加如下数据

      {
       "registry-mirrors":["https://mirror.ccs.tencentyun.com",
          "https://ccr.ccs.tencentyun.com",
          "http://f1361db2.m.daocloud.io",
          "https://dockerproxy.com",
          "https://hub-mirror.c.163.com",
          "https://ung2thfc.mirror.aliyuncs.com",
          "https://mirror.baidubce.com",
          "https://registry.docker-cn.com",
          "https://reg-mirror.qiniu.com",
          "https://dockerhub.azk8s.cn",
          "https://docker.mirrors.ustc.edu.cn"]
      }
      

      image-20240306092618742

    3. 重启docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  4. 下载镜像

    • docker pull gitlab/gitlab-ce

      ubuntu@PANDA:~$ sudo docker images
      REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
      gitlab/gitlab-ce           latest    e9cb66792d94   2 weeks ago    3.01GB
      

配置服务与启动

  1. 安装容器

    docker run -d -p 本机端口1:80 -p 本机端口2:443 -p 本机端口3:22 --restart always --name gitlab -v 存放gitlab数据的目录:/etc/gitlab -v 存放gitlab日志的目录:/var/log/gitlab -v 存放gitlab配置的目录:/var/opt/gitlab --privileged=true gitlab/gitlab-ce
    

    我的启动命令:

    sudo docker run -d -p 58888:80 -p 54443:443 -p 52222:22 --restart always --name gitlab -v /home/ubuntu/workDir/docker/gitlab/gitlab:/etc/gitlab -v /home/ubuntu/workDir/docker/gitlab/log:/var/log/gitlab -v /home/ubuntu/workDir/docker/gitlab/config:/var/opt/gitlab --privileged=true gitlab/gitlab-ce

  2. 修改gitlab.rb文件

    vim 存放gitlab数据的目录/gitlab.rb

    主要修改的配置如下

    external_url 'http://example.com'  # 可填写为ip加端口号,注意:如果你是在docker中安装配置gitlab,并且想要支持https的话,在这里请务必不要填写成'https://example.com',请使用nginx来配置ssl
    
    gitlab_rails['gitlab_ssh_host'] = 'example.com'  # 与external_url一致,但不包括http前缀与端口号
    gitlab_rails['gitlab_shell_ssh_port'] = 22  # 默认为22端口,但因为是在docker中配置,所以需要填写为 '本机端口3'
    
    # 邮箱配置,此处示例为126邮箱
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.126.com"
    gitlab_rails['smtp_port'] = 25 # 网易端口为25
    gitlab_rails['smtp_user_name'] = "你的邮箱地址"
    gitlab_rails['smtp_password'] = "授权码" # POP3/SMTP/IMAP服务授权密码
    gitlab_rails['smtp_domain'] = "126.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = false
    
    # 发件人配置
    gitlab_rails['gitlab_email_enabled'] = true
    gitlab_rails['gitlab_email_display_name'] = 'gitlab server'  # 显示名字
    gitlab_rails['gitlab_email_from'] = "你的邮箱地址" # 发件邮箱
    user["git_user_email"] = "你的邮箱地址"
    

    我的配置如下(未配置邮箱)

    vim /home/ubuntu/workDir/docker/gitlab/gitlab/gitlab.rb

    image-20240306094416603

  3. 生成配置

    # 使用下面的命令进入容器
    docker exec -it gitlab(你的容器名) bash 
    # 然后重新生成配置
    gitlab-ctl reconfigure
    # 再重启gitlab
    gitlab-ctl restart
    

初始化和使用

在浏览器打开 ip:端口号访问

image-20240306094900181

默认账号为root

密码存放在存放gitlab数据的目录/initial_root_password

使用 cat 存放gitlab数据的目录/initial_root_password获取密码并登录

image-20240306095029762

登陆后首先修改密码

image-20240306095303317

image-20240306095435299

内网穿透并配置ssl证书

在这之前要在云服务器商开放8888端口,在域名商配置好解析记录

使用frp内网穿透到公网

frpc 配置:

image-20240306100641948

将内网穿透到公网后修改公网服务器中nginx的配置,并配置ssl证书

nginx配置如下:

server {
    listen 80;
    #填写证书绑定的域名
    server_name "test.freepd.top";
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.html index.htm;
    }
}


server {
   listen       443 ssl;
   server_name  "test.freepd.top";
   ssl_certificate "cert/freepd.top.pem";
   ssl_certificate_key "cert/freepd.top.key";
   ssl_session_timeout 5m;
   #表示使用的加密套件的类型
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
   ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

   ssl_prefer_server_ciphers on;
   location / {
        proxy_set_header X-Forwarded-Ssl on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://127.0.0.1:58888/;
    }
}

重启nginx后就可以通过域名访问gitlab了

image-20240306101534126

创建仓库检查http与ssh两种方式是否可以推送,拉取代码

通过域名登录进gitlab

  • 新建空白项目

    image-20240305154110080

  • 填写项目名称,并点击新建

    image-20240305154246175

  • 检查ssh与http

    检查ssh与http是否与gitlab.rb配置中一致(http克隆链接是否为https,ssh的端口号与 gitlab_rails['gitlab_shell_ssh_port'] 一致)

    image-20240305154458275

  • 添加密钥

    image-20240306101828752

  • 在本地电脑中随便打开目录拉取项目

    image-20240306102015766

到此为止,基于docker搭建的gitlab就可以简单使用了

1

评论区