如何使用 Docker Compose 安装 GitLab?
[如何使用 Docker Compose 安装 GitLab?](https://www.czerniga.it/2021/11/14/how-to-install-gitlab-using-docker-compose/)
你好。今天我将向你展示如何在一小时内安装 GitLab 服务器并在其中运行你的第一个 CI/CD 进程。
本文是有关如何开始使用流行的 CI/CD 工具的系列文章的一部分。在本文中,我将向您展示如何安装 CI/CD 工具以及如何准备构建和测试基于 Maven 的简单项目的过程。
什么是 GitLab?
Gitlab 是一个使用持续集成和持续交付流程支持软件开发的工具。它的主要组件是 Git 版本控制系统。此外,它还提供了许多功能,支持程序员在各种环境下持续构建、测试和自动安装项目的工作。
什么是 Docker Compose?
要了解 Docker Compose 是什么,请参阅文章:如何使用 Docker Compose 安装 Jenkins?
所需工具
在开始工作之前,准备好所需的工具。您可以在网站上找到这些工具的说明: 如何使用 Docker Compose 安装 Jenkins?
Docker Compose 的配置
我们将通过创建一个专用目录来开始安装工作,我们将在其中存储数据和 Gitlab 配置。
> mkdir gitlab
为方便起见,我们还将设置一个包含 Gitlab 目录路径的环境变量:
> export GITLAB_HOME=$(pwd)/gitlab
在下一步中,我们创建具有以下内容的 docker-compose.yml 文件:
# docker-compose.yml
version: '3.7'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'localhost'
container_name: gitlab-ce
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
ports:
- '8080:80'
- '8443:443'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
networks:
- gitlab
gitlab-runner:
image: gitlab/gitlab-runner:alpine
container_name: gitlab-runner
restart: always
depends_on:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- '$GITLAB_HOME/gitlab-runner:/etc/gitlab-runner'
networks:
- gitlab
networks:
gitlab:
name: gitlab-network
此配置定义了我们要运行的容器。在我们的例子中,它将是带有一个 GitLab 运行器的 GitLab 服务(一个用于运行 CI / CD 任务的单独模块)。最重要的配置参数是:
- image – 我们想在我们的服务器中使用的 docker 镜像
- 端口——我们在容器外提供的端口列表。在我们的配置中,我们提供端口 80、443(网站)
- container_name – 我们的容器的名称
- volumes - 指定容器使用的卷。在我们的配置中,我们有与我们的系统共享的目录($ GITLAB_HOME 中的子目录)和一个允许从 GitLab 运行器访问 Docker 环境的附加卷。
- 网络——定义容器将在其中运行的虚拟网络。在我们的例子中,www 门户和运行器在一个“gitlab-network”中运行
Gitlab 安装
使用以下命令启动容器:
> docker-compose up -d
一旦启动,Docker 将从服务器下载 GitLab 和 GitLab Runner 图像。在我的电脑上看起来像这样:
码头工人撰写
首次登录 GitLab 需要一个临时密码,该密码在安装过程中自动生成。我们使用以下命令获取密码:
> docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password
GitLab 启动
我们的 GitLab 位于:http://localhost:8080。转到此地址后,应出现以下屏幕:
注意:门户首次启动可能需要几分钟时间。
要登录门户,我们必须在用户名字段中输入“root”,并在密码字段中输入我们之前获得的临时密码。
登录后,应出现以下屏幕:
GitLab
恭喜,GitLab 已经成功上线!
门户的初始配置
在我们继续之前,值得更改一些门户设置。首先,我们将关闭所有人的公开注册。为此,请单击上方栏中可用的 View Setting 按钮并显示警告(面板地址; http://localhost:8080/admin/application_settings/general#js-signup-setting s )。在新页面上,取消选中启用注册并保存更改。
下一步应该是更改 root 用户。为此,请访问网站: http://localhost:8080/-/profile/account并在更改用户名字段中输入名称。我们通过单击更新用户名来批准。
我们要做的最后一个更改是更改密码。为此,请转到页面:ost:8080/-/profile/password/edit并输入临时密码和新密码。我们通过单击Save password批准更改。
GitLab 运行器配置
要在 GitLab 中使用 GitLab 运行器,您需要对其进行配置。为了正确配置,我们需要从门户复制的令牌。为此,请转到地址:http://localhost:8080/admin/runners并单击复制令牌按钮。
在下一步中,它会转到控制台并运行以下命令:
> docker exec -it gitlab-runner gitlab-runner register --url "http://gitlab-ce" --clone-url "http://gitlab-ce"
启动后,会出现一个配置模块。该模块提供以下信息:
- 输入 GitLab 实例 URL:确认输入的值(点击回车)
- 输入注册令牌:输入之前复制的令牌。
- 输入跑步者的描述:输入跑步者的名字,例如 docker-runner
- 输入跑步者的标签:此处留空
- 输入执行者:在此处输入 docker
- 输入默认的 Docker 镜像:这里我们提供默认的 docker 镜像,例如 maven: latest
正确配置后,我们应该看到确认Runner 注册成功:
除了基本配置外,我们还需要允许从 runner 启动的容器访问 GitLab 运行所在的虚拟网络。为此,我们运行编辑器(例如 vi)
> sudo vi gitlab/gitlab-runner/config.toml
然后我们在运行器配置的末尾添加新行:network_mode = “gitlab-network”
要检查 runner 是否在 GitLab 级别可用,请转到以下地址:http://localhost:8080/admin/runners
我们创建了我们的第一个存储库
设置好运行器后,我们可以创建我们的第一个存储库。为此,请转到页面: http://localhost:8080/projects/new并单击Import project。
Naastępnym ekranie wybieramy导入项目来自:来自 URL 的回购。Następnie podajemy w Git 存储库 URL地址:https ://github.com/czerniga/helloworld.git 。Na końcu zatwierdzamy klikając创建项目。
在下一个屏幕上,选择Import project from: Repo from URL。然后我们提供 Git 存储库 URL 地址:https ://github.com/czerniga/helloworld.git 。最后,单击 Create project 进行确认。
一段时间后,您应该将第一个存储库复制到您的 GitLab。
我们创建 CI/CD 管道
要为项目创建 CI/CD 管道,请单击左侧的主菜单CI/CD,然后单击Editor。屏幕上将出现一个创建 .gitlab-ci.yml 文件的选项,该文件将包含我们的管道定义。该文件将在 Git 存储库中创建。
在新屏幕上,我们可以看到我们的管道编辑器。在编辑器中,粘贴以下内容:
image: maven:latest
stages:
- build
- test
build-job:
stage: build
script:
- echo "Compiling the code..."
- mvn clean package
- echo "Compile complete."
artifacts:
paths:
- target
test-job:
stage: test
dependencies:
- build-job
script:
- ls -al
- echo "Running tests"
- java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld
上面的定义描述了 CI/CD 过程应该如何工作。最重要的元素是:
- image:我们将用于构建项目的 docker 映像
- 阶段:我们的流程步骤列表
- build-job:我们构建项目过程中的第一步。此外,我们保存工件以供下一步使用
- test-job : 运行我们项目的第二步
粘贴我们的文件后,单击Commit changes 确认更改。
一旦获得批准,GitLab 将启动该过程。要检查其结果,请转到左侧菜单中的CI/CD ->管道。在屏幕上,我们应该看到我们的第一个任务已经开始。
我们可以通过单击待定按钮或内部版本号#1来查看此任务的详细信息
一段时间后,应该构建和测试任务。
如何使用 Docker Compose 安装 GitLab
恭喜,您刚刚在 GitLab 中创建了您的第一个 CI/CD 作业!
停止容器
包含我们服务的容器是使用导致后台工作的开关启动的。如果要停止门户,请执行以下命令:
docker-compose down
概括
在本教程中,我展示了如何使用一个 GitLab 运行器运行 GitLab。此处给出的配置导致所有网站数据都保存在您的计算机/服务器上的目录中。因此,当容器停止或移除时,数据不会被删除。