• 如何使用 Docker 部署 GitLab


    微信公众号:运维开发故事,作者:夏老师

    你否曾经想托管自己的GitLab存储库以确保代码永远不会落入坏人之手?尽管在第三方云主机上托管你的存储库有很多优势(例如可用性和可靠性),但要完全控制你的存储库,这样任何人都可以在未经你批准的情况下访问它。

    在Docker的帮助下,您可以做到这一点。我将向你展示它是如何完成的。它并不过分复杂,但需要许多步骤。所以,事不宜迟,让我们开始工作吧。要完成此任务,需要一个正在运行的 Ubuntu Server 实例和一个具有sudo权限的用户。Ubuntu 实例可以托管在你的服务器上,甚至可以托管在你的云托管帐户中(尽管通过第三方托管它会违背自托管存储库的目的)。图片

    安装依赖项

    我们要做的第一件事是安装所需的依赖项。登录到你的 Ubuntu 实例并使用以下命令安装所需的软件:

    sudo apt install ca-certificates curl openssh-server apt-transport-https gnupg lsb-release -y
    
    
    • 1
    • 2

    接下来,我们需要安装 Docker 社区版。为此,我们将添加官方 Docker GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    
    • 1
    • 2

    接下来,添加 Docker 存储库:

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    
    • 1
    • 2

    使用以下命令更新 apt:

    sudo apt-get update
    
    
    • 1
    • 2

    最后,安装 Docker 社区版:

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose -y
    
    
    • 1
    • 2

    使用以下命令将您的用户添加到 docker 组:

    sudo usermod -aG docker $USER
    
    
    • 1
    • 2

    注销并重新登录以使更改生效。到目前为止,一切都很好。让我们继续。

    更改默认 SSH 端口

    因为 GitLab 使用默认的 SSH 端口,所以必须更改默认的 SSH 服务器端口。否则,就会发生冲突。使用以下命令打开 SSH 配置文件:

    sudo vi /etc/ssh/sshd_config
    
    
    
    • 1
    • 2
    • 3

    在该文件中,查找以下行:

    #prot 22
    
    
    • 1
    • 2

    将该行更改为:

    prot 2222
    
    
    • 1
    • 2

    启用端口 22 以通过防火墙:

    sudo ufw allow 2022
    
    
    • 1
    • 2

    确保使用以下命令测试与另一个登录名的 SSH 连接:

    ssh USER@SERVER -p 2022
    
    
    • 1
    • 2

    其中 USER 是您的远程用户名,SERVER 是托管服务器的 IP 地址或域。

    创建一个新的 Docker 卷

    我们现在已经准备好进入 Docker 方面了。我们要做的第一件事是创建一个目录。首先,创建一个目录来存放文件:

    sudo mkdir -p /srv/gitlab
    
    
    • 1
    • 2

    接下来,创建一个目录来存放我们的 Docker compose 文件:

    mkdir ~/docker-gitlab
    
    
    • 1
    • 2

    使用以下命令切换到该目录:

    cd ~/docker-gitlab
    
    
    • 1
    • 2

    创建一个文件来存放环境变量:

    vi .env
    
    
    • 1
    • 2

    将以下内容粘贴到该新文件中:

    GITLAB_HOME=/srv/gitlab
    
    
    • 1
    • 2

    保存并关闭文件。

    创建 Docker 撰写文件

    创建一个新的文件:

    vi compose.yml
    
    
    • 1
    • 2

    在该文件中,粘贴以下内容(确保以粗体更改任何内容以适应您的环境/需要):

    version:'3.6'
    services:
    web:
    image:'gitlab/gitlab-ee:latest'
    container_name:'gitlab-server'
    restart:always
    hostname:'gitlab.example.com'
    environment:
    GITLAB_OMNIBUS_CONFIG:|
    external_url'https://DOMAIN_OR_IP'
    gitlab_rails['smtp_enable']=true
    gitlab_rails['smtp_address']="SMTP_SERVER"
    gitlab_rails['smtp_user_name']="SMTP_SERVER_USERNAME"
    gitlab_rails['smtp_password']="SMTP_SERVER_PASSWORD"
    gitlab_rails['smtp_domain']="DOMAIN"
    gitlab_rails['smtp_enable_starttls_auto']=true
    gitlab_rails['smtp_port']=587
    gitlab_rails['smtp_authentication']="login"
    gitlab_rails['gitlab_email_from']='FROM_EMAIL'
    gitlab_rails['gitlab_email_reply_to']='REPLY_EMAIL'
    # Add any other gitlab.rb configuration here, each on its own line
    ports:
    -'80:80'
    -'443:443'
    -'22:22'
    -'587:587'
    volumes:
    -'$GITLAB_HOME/config:/etc/gitlab'
    -'$GITLAB_HOME/logs:/var/log/gitlab'
    -'$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size:'256m'
    
    
    • 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
    • 29
    • 30
    • 31
    • 32

    保存并关闭文件。

    部署容器

    我们现在已准备好部署容器。为此,请发出以下命令:

    docker-compose up -d
    
    
    • 1
    • 2

    容器的部署需要一些时间(10 到 30 分钟之间的任何时间,取决于你的网络连接速度),此刻可以处理一些其他任务。部署完成后,需要使用以下命令访问自动生成的 root 密码:

    sudo cat /srv/gitlab/config/initial_root_password
    
    
    • 1
    • 2

    应该会看到一长串随机字符,它们将用作你的 root 密码登录。

    访问 GitLab

    打开 Web 浏览器并将其指向 http://SERVER(其中 SERVER 是服务器的 IP 地址或者域名)。GitLab 登录页面(参见图 1),将在其中键入用户名 root 并粘贴您在_intial_root_password_文件中找到的密码,如上所示。如果站点没有立即出现,请给它一些时间让容器完成部署。

    图片图 1: GitLab 登录屏幕意味着成功!

    另一种部署方法

    如果你发现上述部署有问题,这里有另一种方法。使用以下命令设置卷位置:

    export GITLAB_HOME=/srv/gitlab
    
    
    • 1
    • 2

    使用此部署容器(确保更改任何粗体内容以满足您的需要):

    docker run--detach\
      --hostnameHOSTNAME\
      --publish443:443--publish80:80--publish22:22\
      --name gitlab\
      --restart always\
      --volume$GITLAB_HOME/config:/etc/gitlab\
      --volume$GITLAB_HOME/logs:/var/log/gitlab\
      --volume$GITLAB_HOME/data:/var/opt/gitlab\
      --shm-size256m\
      gitlab/gitlab-ee:latest
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    上述方法之一应该可以部署 GitLab。如果你仍然有问题,你可以将向外的 SSH 端口更改为类似 10022 的端口,这样该选项将类似于_—publish 10022:22。_ 最后,如果在部署 GitLab 时仍然遇到问题,这里有另一个选择:

    docker run -d -p 22:22 -p 80:80 -p 443:443 \
    --name gitlab --hostname gitlab.example.com \
    --restart unless-stopped --shm-size 256m \
    -v gitlab_config:/etc/gitlab -v gitlab_logs:/var/log/gitlab \
    -v gitlab_data:/var/opt/gitlab gitlab/gitlab-ce:14.7.0-ce.0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    现在拥有一个可以在公司内部使用的 GitLab 存储库。

  • 相关阅读:
    React 路由总结 react-router-dom6+react-router-dom5
    解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题
    C++ 智能指针
    深瑞IEC103协议
    openjudge 1.13.11 回文素数
    [图像处理]14.分割算法比较 OTSU算法+自适应阈值算法+分水岭
    CRC校验原理及实现
    讯飞AI算法挑战大赛-校招简历信息完整性检测挑战赛-三等奖方案
    Golang反射获取变量类型和值
    SCAU Java 实验6 矩形类的定义与封装
  • 原文地址:https://blog.csdn.net/wanger5354/article/details/126120946