Docker中搭建Gitlab服务
介绍
- 本文介绍了在
docker下搭建Gitlab并使用的流程以及部分注意细节 - 教程搭建环境基于
Ubuntu24.04环境搭建 - 整个组网是
nginx反向代理docker中的Gitlab服务
部署Gitlab
拉起docker
1 | docker run -d \ |
- 这里拉起docker映射出来两个端口,5000对应内部80,走http;5100对应内部22,走ssh,也就是git方式;
- 有一点需要注意,这里的5000和5100两个口并不是实际使用的端口,后面通过nginx反向代理监听的才是真正使用的端口
- 将配置目录、数据目录、日志目录映射出来,方便使用和数据持久化
修改配置
docker将gitlab服务拉起后会生成所有配置文件和数据
gitlab的配置文件是在/etc/gitlab目录下,我们映射出来后就是当前目录下的etc,主要修改的配置文件是etc/gitlab.rb
这里只列出需要修改的配置
1 | # 配置外部URL,这个值会出现在gitlab的界面上,当你创建或者克隆仓库时生成地址使用的就是这个 |
修改完配置文件后docker restart gitlab重启镜像以生效配置
登陆和密码
在配置目录下还有个文件initial_root_password这里记录着root的初始密码,该文件只生成一次,一定时间后会自动删除,也可以手动删除
首次登陆时输入用户名root和密码即可登陆成功!
修改密码
如果想要修改密码,一种方式是直接登陆进去在设置中修改
但是如果还没有登陆或者密码忘记了,则需要进入gitlab镜像中命令行进行修改(未实操,完全抄录)
1 | # 进入容器内部 |
nginx的配置
这里使用nginx统一进行ssl认证和代理,配置有两部分:
- 代理
https
该配置写在http中1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29server {
listen 80;
listen [::]:80;
server_name yourdomain.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yourdomain.com;
charset utf-8;
ssl_certificate /your/cert/path;
ssl_certificate_key /your/key/path;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5000;
client_max_body_size 20480m;
}
} - 代理
ssh
这里注意以下配置和http模块同级别,不要写在http中1
2
3
4
5
6
7
8
9
10
11stream {
upstream gitlab {
server 127.0.0.1:5100;
}
server {
listen 2222;
proxy_pass gitlab;
proxy_connect_timeout 600s;
proxy_timeout 600s;
}
}
ssh key的配置
通用配置
- 首先需要在环境上生成公私密钥对然后所有选项全部回车就行
1
ssh-keygen -t rsa -C 'xxx@xxx.com' # -C 参数是你的邮箱地址

- 然后需要将生成的
~/.ssh/id_rsa.pub文件的内容复制 - 打开gitlab,点击以下路径进行设置:(版本之间存在差异,当前版本:18.3)
头像 -> Preferences -> SSH Keys -> Add new key
在key里填写第二步复制的公钥,然后设置好标题,权限和过期时间后点击添加即可
配置多个ssh key
- 创建密钥:
1
2ssh-keygen -t rsa -C 'email@xx.com' -f ~/.ssh/gitlab_id-rsa
ssh-keygen -t rsa -C 'email@xx.com' -f ~/.ssh/github_id-rsa - 因为自己设置的名字,所以需要通过配置文件进行指定平台登陆时用哪对密钥
创建~/.ssh/config文件进行配置,内容如下:1
2
3
4
5
6
7
8
9
10
11# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id-rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id-rsa - 按通用配置相同的方法在对应平台上添加对应的公钥,就可以使用了
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 追逐笔记!
评论










