坑已踩平—gitlab-ce容器开启https访问

介绍下已有的环境

gitlab-ce 版本是14.6
443端口未启用,只启用了22、80端口,分别映射到本地1008、1002端口。
使用compose安装的,所以直接看yml文件更清晰点

version: '2'
services:
    gitlab:
      image: 'gitlab/gitlab-ce:14.6.0-ce.0'
      container_name: 'gitlab'
      hostname: 'mygitlab'
      restart: unless-stopped
      privileged: true
      volumes:
        - /opt/gitlab-data/config:/etc/gitlab
        - /opt/gitlab-data/logs:/var/log/gitlab
        - /opt/gitlab-data/data:/var/opt/gitlab
      ports:
        - "1002:22"
        - "1008:80"
      environment:
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://172.20.150.239'
          gitlab_rails['initial_root_password'] = "123456"

开启https访问,首先要开启443端口映射,所以要更新一下容器

version: '2'
services:
    gitlab:
      image: 'gitlab/gitlab-ce:14.6.0-ce.0'
      container_name: 'gitlab'
      hostname: 'mygitlab'
      restart: unless-stopped
      privileged: true
      volumes:
        - /opt/gitlab-data/config:/etc/gitlab
        - /opt/gitlab-data/logs:/var/log/gitlab
        - /opt/gitlab-data/data:/var/opt/gitlab
      ports:
        - "1002:22"
        - "1008:80"
        - "1443:443"  # 1443端口映射到gitlab-ce容器的443端口
      environment:
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://172.20.150.239'
          gitlab_rails['initial_root_password'] = "Passw0rd"
# 更新容器配置
docker-compose -f gitlab_compose.yml up -d

创建自签名证书

# 在网上找到个shell脚本生成证书文件

#!/bin/sh
 
# create self-signed server certificate:
 
read -p "Enter your hostname or IP : " DOMAIN
 
echo "Create server key..."
 
openssl genrsa -des3 -out $DOMAIN.key 1024
 
echo "Create server certificate signing request..."
 
SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
 
openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr
 
echo "Remove password..."
 
mv $DOMAIN.key $DOMAIN.origin.key
 
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key
 
echo "Sign SSL certificate..."
 
openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
 
echo "TODO:"
 
echo "Copy $DOMAIN.crt to /home/data/Gitlab/config/ssl/$DOMAIN.crt"
 
echo "Copy $DOMAIN.key to /home/data/Gitlab/config/ssl/$DOMAIN.key"
 
echo "Add nginx configuration in /home/data/Gitlab/config/gitlab.rb"

# sh 执行脚本
# 第一步要求输入域名或IP地址
# 第二步要求输入密码,至少四位
# 后面会要求确认输入密码

开启配置启用https

# 我这里是将/etc/gitlab挂载到本地的/opt/gitlab-data/config目录
# 先在这个路径下创建一个ssl目录
cd /opt/gitlab-data/config/
mkdir ssl
# 然后将脚本生成的证书文件拷贝到ssl目录下
ll /opt/gitlab-data/config/ssl/
total 16
-rw-r--r-- 1 root root 883 Jul 23 15:37 172.20.150.239.crt
-rw-r--r-- 1 root root 668 Jul 23 15:37 172.20.150.239.csr
-rw-r--r-- 1 root root 887 Jul 23 15:37 172.20.150.239.key
-rw-r--r-- 1 root root 963 Jul 23 15:37 172.20.150.239.origin.key

# 修改gitlab.rb文件
vim /opt/gitlab-data/config/gitlab.rb 
external_url 'https://172.20.150.239:1443'
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
nginx['ssl_certificate'] = "/etc/gitlab/ssl/172.20.150.229.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/172.20.150.229.key"
nginx['listen_port'] = 443

external_url : 如果是域名填入域名地址,我这里填的是宿主机IP地址,1443端口也是宿主机映射容器的443端口

nginx[‘redirect_http_to_https’]:http跳转到https

nginx[‘redirect_http_to_https_port’]:http跳转到https的监听端口为80,前提是开启了80端口,我这里就是将容器的80端口映射到宿主机的1008端口

nginx[‘ssl_certificate’]:crt证书地址

nginx[‘ssl_certificate_key’]: key证书地址

nginx[‘listen_port’]:监听容器的443端口,不是宿主机的1443端口!

# 配置生效
docker exec -it gitlab gitlab-ctl hup nginx
docker exec -it gitlab gitlab-ctl reconfigure

测试http访问gitlab是否跳转到https

在这里插入图片描述

# 测试一下clone、push
# 因为使用的是没有经过机构认证的ssl证书,所以git需要忽略ssl证书错误
git config --global http.sslVerify "false"
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是如何使用Docker Compose安装GitLab的步骤: 1. 确认Docker和Docker Compose已被正确安装并可以使用。 2. 创建一个目录来存放GitLab的配置文件和数据。例如,我们可以在主机上创建一个目录,称为“gitlab”,并将其作为项目目录: ``` mkdir gitlab cd gitlab ``` 3. 创建一个名为“docker-compose.yml”的文件,并在其中添加以下内容: ``` version: '3' services: web: image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com:8929' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '8929:80' - '2289:22' volumes: - '/srv/docker/gitlab/config:/etc/gitlab' - '/srv/docker/gitlab/logs:/var/log/gitlab' - '/srv/docker/gitlab/data:/var/opt/gitlab' ``` 上述配置将创建一个名为“web”的GitLab容器,该容器属于GitLab CE图像(最新版本),并且可以在主机上使用以下端口:8929用于HTTP,2289用于SSH。 在“volumes”中,我们定义了三个卷,以便将GitLab的配置文件、日志文件和数据文件存储在主机上的“/srv/docker/gitlab”目录中。确保在主机上创建这些目录。 在“environment”中,我们定义了GitLab Omnibus的配置选项,包括外部URL和SSH端口。请根据需要更改这些配置选项。 4. 在主机上运行以下命令启动GitLab容器: ``` docker-compose up -d ``` 该命令将开始构建和启动GitLab容器。您可以使用“-d”选项将其放入后台运行模式。 5. 在浏览器中访问GitLab的外部URL。例如,我们的例子中,您可以在浏览器中打开“http://gitlab.example.com:8929”来访问GitLab。首次访问时,您需要设置admin用户的密码。 6. 您现在可以使用GitLab来创建项目、管理代码版本、设置CI/CD流程等等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想敲代码的运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值