基于docker搭建gitlab
前段时间基于docker搭建了一个gitlab容器用于存储自己写的小代码
今天将搭建流程给分享出来
前期准备工作
-
准备一台至少2核心4G的服务器,或者云服务器
-
安装好docker环境
-
Docker 安装文档:https://docs.docker.com/engine/install/
ubuntu@PANDA:~$ sudo docker --version Docker version 25.0.3, build 4debf41
-
-
国内配置镜像(有科学环境忽略此步)
-
打开/创建 /ect/docker/daemon.json文件
-
添加如下数据
{ "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"] }
-
重启docker
sudo systemctl daemon-reload sudo systemctl restart docker
-
-
下载镜像
-
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
-
配置服务与启动
-
安装容器
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
-
修改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
-
生成配置
# 使用下面的命令进入容器 docker exec -it gitlab(你的容器名) bash # 然后重新生成配置 gitlab-ctl reconfigure # 再重启gitlab gitlab-ctl restart
初始化和使用
在浏览器打开 ip:端口号访问
默认账号为root
密码存放在存放gitlab数据的目录/initial_root_password
使用 cat 存放gitlab数据的目录/initial_root_password
获取密码并登录
登陆后首先修改密码
内网穿透并配置ssl证书
在这之前要在云服务器商开放8888端口,在域名商配置好解析记录
使用frp内网穿透到公网
frpc 配置:
将内网穿透到公网后修改公网服务器中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了
创建仓库检查http与ssh两种方式是否可以推送,拉取代码
通过域名登录进gitlab
-
新建空白项目
-
填写项目名称,并点击新建
-
检查ssh与http
检查ssh与http是否与gitlab.rb配置中一致(http克隆链接是否为https,ssh的端口号与 gitlab_rails['gitlab_shell_ssh_port'] 一致)
-
添加密钥
-
在本地电脑中随便打开目录拉取项目
到此为止,基于docker搭建的gitlab就可以简单使用了
评论区