使用Docker部署GitLab服务并启用HTTPS

这篇具有很好参考价值的文章主要介绍了使用Docker部署GitLab服务并启用HTTPS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用官方提供的 Docker 镜像部署 GitLab 非常方便,相关的安装配置文档也非常详细。本文主要是对一次成功的部署流程进行记录,方便下次快捷部署。

拉取官方镜像

官方提供了「社区版」和「企业版」两种镜像,这里采用「社区版」进行部署,执行以下命令拉取最新的 Docker 镜像。如果需要其他的镜像标签,请查阅官方镜像仓库。

docker pull gitlab/gitlab-ce:latest

创建挂载目录

在宿主机创建以下目录,这些目录将在启动 Docker 容器时进行挂载:

mkdir -p /data/gitlab/config
mkdir -p /data/gitlab/certs
mkdir -p /data/gitlab/logs
mkdir -p /data/gitlab/data

启动容器

docker run -d --name gitlab --hostname gitlab.your_domain.com -p 443:443 -p 80:80 --restart always -v /data/gitlab/certs:/etc/gitlab/ssl -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab --privileged=true gitlab/gitlab-ce:latest

hostname和配置文件中的external_url对应,去掉协议名称。

由于我们使用 HTTPS 进行访问,所以这里将 443 端口映射出来即可,不必映射 80 端口。同样,ssh 的端口也要映射出来(如果不使用 SSH 协议进行代码的 pull 和 push,这里就不需要映射 SSH 端口),宿主机选择的 ssh 端口要和配置文件中gitlab_shell_ssh_port配置的端口一致。

GitLab 容器启动可能需要几分钟,执行docker logs -f 容器ID可以观察启动日志。

如果容器启动失败:提示Permission denied 。这时由于挂载的本地目录在容器中没有执行权限, 解决方法是在运行容器的时候,给容器加入权限参数 --privileged=true,以特权方式启动容器 。

调整配置文件

GitLab 通过 gitlab.rb 文件进行配置,我们需要调整外部链接、邮件、SSL 认证等配置。

配置邮件发送服务

gitlab_rails['gitlab_email_from'] = 'gitlab@your_domain.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@your_domain.com"
gitlab_rails['smtp_password'] = "your_email_password"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

以上是腾讯企业邮箱的配置示例,部分邮箱服务商可能不支持第三方客户端以邮箱密码进行登录,那么就需要去服务商处获取别的授权密码进行登录。

开启 HTTPS

external_url 'https://gitlab.you_domain.com:443'

#配置http自动跳转到https协议的地址;
nginx['redirect_http_to_https'] = true

#80端口是容器内的端口,如果不配置http://宿主IP:80/将不可访问;
nginx['redirect_http_to_https_port'] = 80

# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.you_domain.com.pem"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.you_domain.com.key"

#配置监听容器内的443端口,注意不是外面主机的443端口
nginx['listen_port'] = 443

nginx['proxy_set_headers'] = {
   "Host" => "$http_host_with_default",
   "X-Real-IP" => "$remote_addr",
   "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
   "X-Forwarded-Proto" => "https",
   "X-Forwarded-Ssl" => "on",
   "Upgrade" => "$http_upgrade",
   "Connection" => "$connection_upgrade"
}

nginx['custom_error_pages'] = {
   '404' => {
   'title' => 'Example title',
   'header' => 'Example header',
   'message' => 'Example message'
   }
}

external_url会影响 GitLab 中创建项目的 URL 地址,如果不配置,则默认使用容器的 hostname,即容器 ID,这里需要配置为 GitLab 服务的域名。

ssl_certificatessl_certificate_key用于配置 HTTPS 所需要的证书,这两份证书需要在启动 GitLab 时挂载到容器中。

注意,如果external_url使用 https:

方案一、由gitlab自动生成证书挂载进来

方案二、申请免费的SSL,复制到/data/gitlab/certs挂载目录下,使用openssl命令生成.crt文件。

openssl x509 -outform pem -in gitlab.you_domain.com.pem -out gitlab.you_domain.com.crt 

SSH 配置

gitlab_rails['gitlab_ssh_host'] = 'gitlab.you_domain.com'
gitlab_rails['gitlab_shell_ssh_port'] = 1022

gitlab_shell_ssh_port这里的端口会影响 GitLab 项目的 ssh 地址,所以直接配置宿主机映射的端口。

接下来可以执行以下命令使配置变更生效:

 docker exec -it my-gitlab gitlab-ctl reconfigure

至此可以通过,一下测试地址访问。

https://gitlab.you_domain.com:443/

宿主机 Nginx 配置

这部分配置是可选的,主要是对 GitLab 服务做一个反向代理,以下是配置示例,都是非常基础的 HTTPS Server 配置,就不再赘述了。

server {
    listen 80;
    server_name gitlab.you_domain.com;
    rewrite ^(.*) https://$host$1 permanent;
}

server {
    listen 443 ssl;
    server_name gitlab.you_domain.com;

    ssl on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    ssl_certificate /home/admin/.acme.sh/your_domain.com/fullchain.cer;
    ssl_certificate_key /home/admin/.acme.sh/your_domain.com/your_domain.com.key;
    ssl_trusted_certificate /home/admin/.acme.sh/your_domain.com/ca.cer;

    ssl_dhparam /home/admin/.acme.sh/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

    # 将请求代理到 GitLab 容器
    location / {
        proxy_redirect off;
        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_pass https://127.0.0.1:443;
    }

    # 对 GitLab 的静态资源访问也要做转发,否则页面样式可能出错
    location ~ .*.(js|css|png)$ {
	    proxy_pass https://127.0.0.1:443;
    }
}

常见问题

Whoops, GitLab is taking too much time to respond

原因可能是机器内存太小,gitlab最小内存需要2G,建议加大机器内存。

替代方案是增加交换分区的大小,具体如下:

1、检查现有的交换空间大小:

free -m

2、添加交换文件,并设置大小为 2G:

dd if=/dev/zero of=/swapfile bs=1024 count=2048000

3、创建交换空间:

mkswap /swapfile

4、修改 mem.swap 文件权限:

chmod 0600 /swapfile

5、启用新增加的 2G 交换空间:

swapon /swapfile

6、修改 /etc/fstab 文件,添加如下一行:文章来源地址https://www.toymoban.com/news/detail-769001.html

/swapfile       swap           swap   defaults     0 0

到了这里,关于使用Docker部署GitLab服务并启用HTTPS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录使用gitlab实现Docker自动化部署

    目录 前言 一、gitlab-runner docker安装 二、gitlab-runner的注册与使用 1.注册 2. .gitlab-ci.yml 脚本编写 总结 前面搭建了gitlab与harbor ,现在就使用它们来实现自动化docker部署。所谓自动化部署,就是提交代码到指定分支时自动触发预先写好的脚本,来实现打包,推送镜像。想要实现这

    2023年04月11日
    浏览(35)
  • 使用阿里云服务器部署和使用GitLab

    本文阿里云百科分享使用阿里云服务器部署和使用GitLab,GitLab是Ruby开发的自托管的Git项目仓库,可通过Web界面访问公开的或者私人的项目。本教程介绍如何部署和使用GitLab。 目录 准备工作 部署GitLab环境 使用GitLab 登录GitLab 生成密钥对文件并获取公钥 创建项目 使用GitLab 部署

    2024年02月13日
    浏览(36)
  • Vmware虚拟机搭建 K8S ingress Jenkins Gitlab Harbor Docker 一键部署SpringCloud微服务

    本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 20.04.6。 操作系统 主机名 IP地址 进程 功能 Ubuntu 20.04.6 k8s-master 192.168.189.128 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico 主节点 Ubuntu 20.04.6 k8s-node1 192.168.189.129 docker,kubelet,kube-proxy,c

    2024年02月03日
    浏览(41)
  • Gitlab基础篇: Gitlab docker 安装部署、Gitlab 设置账号密码

    安装docker gitlab前确保docker环境,如果没有搭建docker请查阅“Linux docker 安装文档” docker 下载 gitlab容器 参数解析 命令 参数 解析 -name gitlab 容器的名称 -p 18081:80 80端口为gitlab可视化操作服务的默认访问端口,防止占用将80更改为18081 -p 10022:22 22为ssh 端口,因为冲突所以改成10

    2024年01月21日
    浏览(29)
  • docker部署gitlab CI/CD (一)第一篇:部署gitlab及汉化

    网上很多类似教程,但多少有点夹带私货,有的竟然拉取的第三方镜像,而且很多都要修改配置文件,完全不知道是为什么,于是结合其他人的博客和官方文档, 知其然也要知其所以然,于2023年4月17日写下这篇。 官方文档: https://docs.gitlab.com/ee/install/docker.html 主要参考博客

    2023年04月17日
    浏览(39)
  • Docker部署配置Gitlab

    参考1:Gitlab 仓库搭建(详细版) 参考2:搭建 gitlab 私有仓库 Gitlab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。Gitlab有乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它由 Ruby 写成。后来,一些部分用 Go 语言重写,现

    2024年02月05日
    浏览(29)
  • Docker部署Gitlab

    docker 19.03.13 初始化配置文件 80端口部署方式(二选一) 非80端口需要的部署方式(二选一) 第一步:启动docker 第二步 修改 gitlab.rb文件 xxx.xxx.xxx.xxx 为 外网访问IP vim /home/feature/docker/software/gitlab/config/gitlab.rb 第三步 修改 gitlab.yml vim /home/feature/docker/software/gitlab/data/gitlab-rails/

    2024年02月14日
    浏览(25)
  • 一、Docker部署GitLab(详细步骤)

    docker安装教程:https://qingsi.blog.csdn.net/article/details/131270071 注意:接下来的配置请在容器内进行修改,不要在挂载到宿主机的文件上进行修改。否则可能出现配置更新不到容器内,或者是不能即时更新到容器内,导致gitlab启动成功,但是无法访问 修改完成之后保存退出即可,

    2024年04月09日
    浏览(83)
  • Gitlab服务部署及应用

    目录 Gitlab简介 Gitlab工作原理 Gitlab服务构成 Gitlab环境部署  安装依赖包 启动postfix,并设置开机自启 设置防火墙 下载安装gitlab rpm包 修改配置文件/etc/gitlab/gitlab.rb,生产环境下可以根据需求修改 重新加载配置文件  浏览器登录Gitlab输入 http://服务器IP 打开另一台主机  设置发

    2024年02月12日
    浏览(16)
  • 基于jenkins+gitlab+docker部署zabbix

    我现在已经在一台服务器上部署了jenkins和gitlab,现在有一个场景是需要在服务器上再部署一个zabbix,需要通过jenkins加上gitlab部署,并且要求zabbix是通过docker部署的 jenkins、gitlab已完成部署并能正常访问,服务器docker能够正常使用 1、创建Git仓库: 在GitLab上创建一个新的仓库,

    2024年04月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包