首页 > 其他分享 >Docker Compose部署GitLab

Docker Compose部署GitLab

时间:2024-10-15 21:03:51浏览次数:7  
标签:Compose 8080 gitlab GitLab http docker Docker runners

image

今天我将向你展示如何在一小时内安装 GitLab 服务器,并在其中运行第一个 CI/CD 进程。
本文是 “如何开始使用流行的 CI/CD 工具 ”系列文章的一部分。在本文中,我将向你展示如何安装 CI/CD 工具,以及如何准备基于 Maven 构建和测试一个简单项目的流程。

什么是 GitLab?

Gitlab 是一款支持使用持续集成和持续交付流程进行软件开发的工具。它的主要组件是 Git 版本控制系统。此外,它还提供许多功能,支持程序员在各种环境下持续构建、测试和自动安装项目。本文GitLab 17版本


什么是 Docker Compose?
要了解什么是 Docker Compose,请访问文章: 如何使用 Docker Compose 安装 Jenkins?

所需工具
开始工作前,请准备好所需工具。你可以在网站上找到这些工具的说明: 如何使用 Docker Compose 安装 Jenkins?

Docker Compose 的配置


我们将创建一个专门的目录来存储数据和 Gitlab 配置,然后开始安装工作。

下一步,我们创建包含以下内容的 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://192.168.0.107:8080'
     ports:
       - "8080:80"
       - "8443:443"
     volumes:
       - "/home/docker/gitlabce/config:/etc/gitlab"
       - "/home/docker/gitlabce/logs:/var/log/gitlab"
       - "/home/docker/gitlabce/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
       - "/home/docker/gitlabce/gitlab-runner:/etc/gitlab-runner"
     networks:
       - gitlab

networks:
   gitlab:
     name: gitlab-network

按实际部署环境修改 external_url 'http://192.168.0.107:8080',  其中192.168.0.107在这儿是我的虚拟机IP

该配置定义了我们要运行的容器。在我们的例子中,将是 GitLab 服务和一个 GitLab runner(运行 CI / CD 任务的独立模块)。最重要的配置参数有

image - 我们想在服务器中使用的 docker 镜像
端口--我们在容器外提供的端口列表。在我们的配置中,我们提供了 80、443(网站)端口
container_name - 容器名称
volumes - 指定容器使用的卷。在我们的配置中,我们有与系统共享的目录($ GITLAB_HOME 中的子目录)和一个允许从 GitLab 运行程序访问 Docker 环境的额外卷。
networks - 定义容器运行的虚拟网络。在我们的例子中,www 门户和运行程序在一个 “gitlab-network ”中运行。

安装 Gitlab

使用以下命令启动容器

docker-compose up –d

启动后,Docker 会从服务器上下载 GitLab 和 GitLab Runner 映像。在我的电脑上是这样的

image

首次登录 GitLab 需要一个临时密码,该密码在安装过程中自动生成。我们使用以下命令获取密码

docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password


GitLab 启动

我们的 GitLab 网址是:http://192.168.0.107:8080。访问该地址后,会出现以下界面:

image

注意:首次启动门户网站可能需要几分钟时间。

要登录门户,我们必须在用户名一栏输入 “root”,并在密码一栏输入之前获得的临时密码。

登录后,会出现以下界面:

image

恭喜您,GitLab 已成功启动!

门户的初始配置


在继续之前,我们需要更改一些门户设置。首先,我们要关闭所有人的开放注册。为此,请单击上栏带有警告的 “查看设置 ”按钮(面板地址;
http://localhost:8080/admin/application_settings/general#js-signup-settings )。在新页面上,取消选中已启用注册,然后保存更改。

image

下一步应该是更改根用户。为此,请访问网站:http://localhost:8080/-/profile/account

然后在更改用户名字段中输入名称。点击 “更新用户名 ”进行批准

image

最后一项更改是修改密码。为此,请进入以下页面:OST:8080/-/profile/password/edit 并输入临时密码和新密码。点击 “保存密码 ”批准更改。

GitLab Runner配置

要在 GitLab 中使用 GitLab 运行程序,需要对其进行配置。为了正确配置,我们需要从门户网站复制一个令牌。为此,请访问地址:http://localhost:8080/admin/runners

点击 “复制令牌 ”按钮。

image

下一步,它将进入控制台并运行以下命令:

docker exec -it gitlab-runner gitlab-runner register --url "http://192.168.0.107:8080" --clone-url "http://192.168.0.107:8080" --token glrt-QPPVLqd7-ZD7eFwAXVbZ

启动后,将出现一个配置模块。该模块提供以下信息:

输入 GitLab 实例 URL:确认输入值(点击回车键)
输入注册令牌:输入之前复制的令牌。
输入运行程序的描述:输入运行程序的名称,例如 docker-runner
输入运行程序的标记:此处留空
输入执行器:在此处输入 docker
输入默认的 Docker 镜像:在这里我们提供默认的 Docker 镜像,例如 maven: latest
正确配置后,我们应该会看到 Runner 注册成功的确认信息:

image

gitlab runner config配置文件

config.toml 中增加如下network_mode = "gitlab-network"

concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0

[session_server]
   session_timeout = 1800

[[runners]]
   name = "devu\bbu\b\b"
   url = "
http://192.168.0.107:8080"
   id = 1
   token = "glrt-C7xexPtY4yfa39wHo3pn"
   token_obtained_at = 2024-10-15T01:07:57Z
   token_expires_at = 0001-01-01T00:00:00Z
   executor = "docker"
   clone_url = "
http://192.168.0.107:8080"
   [runners.custom_build_dir]
   [runners.cache]
     MaxUploadedArchiveSize = 0
     [runners.cache.s3]
     [runners.cache.gcs]
     [runners.cache.azure]
   [runners.docker]
     tls_verify = false
     image = "ruby:2.7"
     privileged = false
     disable_entrypoint_overwrite = false
     oom_kill_disable = false
     disable_cache = false
     volumes = ["/cache"]
     network_mode = "gitlab-network"
     shm_size = 0
     network_mtu = 0

[[runners]]
   name = "javv3"
   url = "
http://192.168.0.107:8080"
   id = 3
   token = "glrt-QPPVLqd7-ZD7eFwAXVbZ"
   token_obtained_at = 2024-10-15T01:47:35Z
   token_expires_at = 0001-01-01T00:00:00Z
   executor = "docker"
   clone_url = "
http://192.168.0.107:8080"
   [runners.custom_build_dir]
   [runners.cache]
     MaxUploadedArchiveSize = 0
     [runners.cache.s3]
     [runners.cache.gcs]
     [runners.cache.azure]
   [runners.docker]
     tls_verify = false
     image = "maven:latest"
     privileged = false
     disable_entrypoint_overwrite = false
     oom_kill_disable = false
     disable_cache = false
     volumes = ["/cache"]
     shm_size = 0
     network_mtu = 0
     network_mode = "gitlab-network"

注册成功可以在Runner控制台查看

Runner

http://192.168.0.107:8080/admin/runners


clipboard

配置runner

http://192.168.0.107:8080/admin/runners/3/edit

勾选 Run untagged jobs

Use the runner for jobs without tags in addition to tagged jobs.

clipboard

创建第一个版本库


设置运行程序后,我们就可以创建第一个版本库了。为此,请转到
http://localhost:8080/projects/new 页面,然后单击导入项目

在下一个屏幕中,选择从以下地址导入项目: Repo from URL。然后提供 Git 仓库 URL 地址:https://github.com/czerniga/helloworld.git

最后点击 “创建项目 ”确认

image


创建 CI/CD 管道


要为项目创建 CI/CD 管道,请单击左侧主菜单的 CI/CD,然后点击编辑器。屏幕上将显示创建 .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:运行项目的第二步

粘贴文件后,单击 “提交更改 ”确认更改

批准后,GitLab 将启动流程。要查看其结果,请转到左侧菜单中的 CI/CD -> Pipelines。在屏幕上,我们会看到第一个任务已经启动

CI中Build构建成功

clipboard

恭喜您,您刚刚在 GitLab 中创建了第一个 CI/CD 作业!

停止容器
包含我们服务的容器是通过开关在后台启动的。如果你想停止门户,请执行以下命令:

docker-compose down


总结

在本教程中,介绍了如何使用一个 GitLab 运行程序来运行 GitLab。这里给出的配置会导致所有网站数据都保存在你的计算机/服务器上的目录中。因此,当容器停止或移除时,数据不会被删除。



今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

image_thumb2_thumb_thumb_thumb_thumb[1]

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

标签:Compose,8080,gitlab,GitLab,http,docker,Docker,runners
From: https://www.cnblogs.com/wintersun/p/18468418

相关文章

  • docker如何建立本地私有仓库,并将docker镜像推到私有仓库
    在Docker中,您可以通过DockerRegistry创建本地私有仓库,并将Docker镜像推送到这个私有仓库。以下是具体步骤:步骤1:启动一个本地Docker私有仓库拉取registry镜像:Docker官方提供了一个registry镜像,可以用来运行私有仓库。首先,您需要从DockerHub拉取这个镜......
  • DolphinScheduler快速上手:基于Docker Compose的安装与配置全攻略
    DolphinScheduler是一款强大的开源分布式任务调度系统,广泛应用于大数据领域,用于管理复杂的工作流。本文将详细介绍如何通过DockerCompose安装和配置DolphinScheduler,以便快速搭建并使用这一系统。1.环境准备首先,确保你的系统已经安装了Docker和DockerCompose。Docker......
  • docker-compose安装mysql/redis/nacos环境
    dockerdocker-compose安装查看上一篇文章1.新建目录并创建docker-compose.yaml文件文件内容services:mysql:image:mysql:8.2.0container_name:mysqlenvironment:MYSQL_ROOT_PASSWORD:1qaz@WSXMYSQL_DATABASE:nacosMYSQL_USER:......
  • linux抓取docker内部服务网络包
    docker内应用抓包分析1、获取docker的网络信息dockernetworkls2、查看docker网络的网段dockernetworkinspectxxx3、找到docker的虚拟网卡ifconfig对网卡的端口进行抓包处理tcpdump-ibr-0c8b954bbb83port9962-w./test1.captcpdump-ieth0port9401-w./......
  • Docker镜像仓库关闭:运维的无奈与吐槽
    近期,国内外多个Docker镜像仓库陆续发布停止服务的公告,这对于广大依赖Docker进行开发、部署的运维人员来说,无疑是一场突如其来的噩梦。原本顺畅的镜像拉取流程,如今却变得异常艰难,让人不禁要问:这究竟是怎么了?事情的起因似乎可以追溯到一段时间前,中国科学技术大学(中科大)的Docker......
  • 收下这份Docker命令备忘录,Linux运维早下班!
    本文给大家分享Docker的命令备忘录,希望对做运维的小伙伴有所帮助!1.Docker简介Docker是一个开源平台,旨在帮助开发人员和运维人员通过容器技术加速应用的开发、测试和部署。它提供了轻量级的隔离环境,使应用程序及其依赖能够快速打包并运行在任何环境中。Docker的核心组......
  • Docker 学习笔记
    目录快速入门:镜像与容器:dockerrun命令:选项详解:Docker基础:基础命令:演示:数据卷:案例1-利用Nginx容器部署静态资源:案例2-MySQL容器数据挂载:自定义镜像:简介:Dockerfile:镜像构建:网络:项目部署:DockerCompose:快速入门:镜像与容器:​ 当利用Docker安装应用时,Docker会自动搜索并下载应用镜......
  • Docker部署最新版本EMQX服务,上干货不废话
    1.拉取emqx镜像:dockerpullemqx/emqx:latest 显示如上即代表拉取成功2.使用dockerimages 查看镜像 4.启动emqx服务dockerrun-d-v/etc/localtime:/etc/localtime:ro-p18083:18083-p1883:1883-p8083:8083emqx/emqx:latest 说明已经成功启动5.去......
  • Docker 使用Mysql 部署Baget
    一、建立配置文件1.新建文件夹mkdir/panel/docker/baget-data/packages2.新建配置文件mk/panel/docker/baget-data/baget.envApiKey=APISSSSSStorage__Type=FileSystemStorage__Path=/panel/docker/baget-data/packagesDatabase__Type=MySqlDatabase__ConnectionS......
  • docker 容器指定utf-8编码,解决中文乱码
    在运行Docker容器的时候,如果容器内应用需要使用UTF-8编码来正常处理中文,你可以通过设置环境变量来指定编码。可以使用-e或者--env标志来设置环境变量。比如,设置LANG和LC_ALL环境变量为C.UTF-8或者en_US.UTF-8:dockerrun-eLANG=C.UTF-8-eLC_ALL=C.UTF-8-it<......