安装Gitlab CE版本
docker pull gitlab/gitlab-ce:latest # ce是社区版,也可以选择自己的版本安装
配置$GITLAB_HOME
我们需要一个配置目录,当Docker
中的Gitlab
容器启动时,会将配置文件、日志文件、数据文件挂载到这个目录中。这样我们可以在容器重启后,不会丢失数据。
并且可以方便的在宿主机中,修改Gitlab
容器的配置文件。
首先在想要保存容器数据的目录下创建三个文件夹。
mkdir -p /srv/gitlab/{config,logs,data}
将export GITLAB_HOME=/srv/gitlab
添加到/etc/profile
中,然后执行source /etc/profile
。
在终端中使用echo $GITLAB_HOME
查看是否配置成功。
启动Gitlab容器
docker run -d -p 18443:443 -p 18080:80 -p 18022:22 --name gitlab --restart always -v $GITLAB_HOME/config:/etc/gitlab -v $GITLAB_HOME/logs:/var/log/gitlab -v $GITLAB_HOME/data:/var/opt/gitlab gitlab
这里面有几个重要的参数需要注意:
-p 18443:443
,我们将宿主机的18443
端口映射到Gitlab
容器的443
端口,这样我们就可以通过https://ip:18443
访问Gitlab
。-p 18080:80
,我们将宿主机的18080
端口映射到Gitlab
容器的80
端口,这样我们就可以通过http://ip:18080
访问Gitlab
。-p 18022:22
,我们将宿主机的18022
端口映射到Gitlab
容器的22
端口,这样我们就可以通过ssh -p 18022 git@ip
访问Gitlab
。
配置SSL
证书
我们使用自行注册的证书来配置https
协议。首先我们需要已经准备好的SSL
证书。
# 需要注意,我们必须要将证书放在$GITLAB_HOME/config目录下,否则容器无法读取到证书。cp xxx.top.pem /srv/gitlab/config/xxx.top.pemcp xxx.top.key /srv/gitlab/config/xxx.top.key
配置gitlab.rb
文件
在$GITLAB_HOME/config
目录下,我们可以找到gitlab.rb
文件,这个文件是Gitlab
的配置文件。每当使用gitlab-ctl reconfigure
命令时,Gitlab
会读取这个文件的配置。并通过这个文件中的配置,生成Gitlab
、Nginx
、Postfix
等服务的配置文件。
external_url 'https://git.xxx.top' # 这里填写你的域名gitlab_rails['gitlab_shell_ssh_port'] = 18022 # 这里填写你自己映射的ssh端口nginx['redirect_http_to_https'] = false # 是否将http重定向到httpsnginx['ssl_certificate'] = "/etc/gitlab/xxx.top.pem" # 这里填写你的证书路径nginx['ssl_certificate_key'] = "/etc/gitlab/xxx.top.key" # 这里填写你的证书路径letsencrypt['enable'] = false # 关闭自动生成的证书puma['worker_processes'] = 0 # 配置puma集群数量,减少内存占用gitlab_rails['time_zone'] = 'Asia/Shanghai' # 配置时区
配置完成后,我们需要执行gitlab-ctl reconfigure
命令,让Gitlab
读取配置文件并生成配置文件。
但是为了方便,我们直接重新启动容器,重新启动也会让Gitlab
读取配置文件。
docker restart gitlab
配置Nginx反向代理
server { listen 80; server_name git.xxx.top; rewrite ^(.*)$ https://${server_name}$1 permanent;}
server { listen 443 ssl; server_name git.xxx.top; ssl_certificate /srv/gitlab/config/xxx.top.pem; ssl_certificate_key /srv/gitlab/config/xxx.top.key;
location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass https://127.0.0.1:18443; # 这里填写你的Gitlab容器的ip和端口 }}
配置完成后,我们需要执行sudo nginx -s reload
命令,让Nginx
重新加载配置文件。
如果每一步都配置正确,那么我们就可以通过https://git.xxx.top
访问我们的Gitlab
了。
如果你的Gitlab
无法访问,可以查看容器的日志,找到错误原因。
docker logs -f -t --tail=100 gitlab # 查看容器日志 只看最后100行 滚动查看
配置Gitlab
初始化密码
我们可以通过cat $GITLAB_HOME/config/initial_root_password
查看Gitlab
的初始化密码。需要注意的是,这个文件会在24小时后失效。
我们需要通过这个密码,登录Gitlab
后台,修改密码。
总结
Gitlab
的服务占用实在是太大了,我的2核4G服务器很难吃得消,所以后续使用更轻便的Gitea
来配置。