我的宿主机操作系统是CentOS7,安装好了Nginx。在开始部署GitLab之前,请确保宿主机上已正常安装并启动docker服务。 本文默认使用root系统账户,预期站点:https://code.xiaowo.me
1.拉取镜像
$ docker pull gitlab/gitlab-ce
2.在宿主机建立数据目录
为了方便升级,要把GitLab容器的数据独立出来。在宿主机建立数据目录,并在该目录底下建立config、logs、data三个子目录。
mkdir /data/gitlab
mkdir /data/gitlab/config
mkdir /data/gitlab/logs
mkdir /data/gitlab/data
我的HTTPS用的是沃通免费证书。在建立好数据目录后,要把证书文件拷贝进去。这里,我拷贝在/data/gitlab/ssl/xiaowo目录。
3.宿主机Nginx增加HTTPS支持
添加配置文件:/etc/nginx/conf.d/gitlab.conf 内容如下:
## 将HTTP请求全部重定向至HTTPS
server {
listen 80;
server_name code.xiaowo.me;
charset utf-8;
access_log /var/log/nginx/gitlab.access.log;
error_log /var/log/nginx/gitlab.error.log;
rewrite ^ https://code.xiaowo.me;
}
## 请求转发到GitLab容器
server {
listen 443 ssl;
server_name code.xiaowo.me;
charset utf-8;
access_log /var/log/nginx/gitlab.access.log;
error_log /var/log/nginx/gitlab.error.log;
ssl on;
ssl_certificate /data/gitlab/ssl/xiaowo/xiaowo.me.crt;
ssl_certificate_key /data/gitlab/ssl/xiaowo/xiaowo.me.key;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
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_redirect off;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
proxy_pass https://127.0.0.1:446;#注意这里的446端口
}
}
4.运行GitLab容器
这里将宿主机的446端口映射到容器的443端口,实现https的请求转发。
docker run --detach \
--hostname code.xiaowo.me \
--publish 446:443 --publish 8088:80 --publish 24:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
5.GitLab容器增加HTTPS支持
修改配置文件:/data/gitlab/config/gitlab.rb 开启以下配置
external_url 'https://code.xiaowo.me'
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/var/opt/gitlab/ssl/xiaowo/xiaowo.me.crt"
nginx['ssl_certificate_key'] = "/var/opt/gitlab/ssl/xiaowo/xiaowo.me.key"
注意ssl证书的目录:宿主机的数据目录/data/gitlab/data,已经挂载到容器的/var/opt/gitlab目录。
6.重启GitLab容器
docker restart gitlab
至此部署完毕,可以访问站点了:https://code.xiaowo.me
7.运维
启动GitLab容器
docker start gitlab
停止GitLab容器
docker stop gitlab
升级新版本
# 先拉取新版本镜像
docker pull gitlab/gitlab-ce:latest
# 再重新运行容器
docker stop gitlab
docker rm gitlab
docker run --detach \
--hostname code.xiaowo.me \
--publish 446:443 --publish 8088:80 --publish 24:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest