前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker gitlab构建镜像

docker gitlab构建镜像

作者头像
诺依阁
发布于 2025-03-16 12:20:02
发布于 2025-03-16 12:20:02
14510
代码可运行
举报
运行总次数:0
代码可运行

最近在研究流水线,对于我来说,自动构建并上传镜像是非常有必要的,一方面每次都需要执行代码,一方面每次都需要找到版本号,非常的麻烦。 在此,我顺便编写文章,记录gitlab快速搭建以及ci/cd部署。

配置要求: 4H 8G (可以自己电脑开自启动的虚拟机

首先安装docker/docker-compose,nuoyis提供了快速安装脚本,在安装docker前全是n

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -sSO https://shell.nuoyis.net/nuoyis-init.sh;bash nuoyis-init.sh

然后将下方docker-compose复制进去(注意要修改内容)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: always
    privileged: true
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://你的外网机器IP:2236'
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
        # 禁用 PUMA 集群模式
        puma['worker_processes'] = 0
        puma['min_threads'] = 1
        puma['max_threads'] = 2
        # 关闭监控
        prometheus_monitoring['enable'] = false
        alertmanager['enable'] = false
        node_exporter['enable'] = false
        redis_exporter['enable'] = false
        postgres_exporter['enable'] = false
        pgbouncer_exporter['enable'] = false
        gitlab_exporter['enable'] = false
        sidekiq['metrics_enabled'] = false
      GITLAB_ROOT_PASSWORD: '修改成你的密码'
    ports:
      - "2236:2236"
      - "2238:22"
    volumes:
      - /nuoyis-server/gitlab/config:/etc/gitlab
      - /nuoyis-server/gitlab/logs:/var/log/gitlab
      - /nuoyis-server/gitlab/data:/var/opt/gitlab
    networks:
      nuoyis-net:
        aliases:
          - nuoyis-gitlab
  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    restart: always
    privileged: true
    volumes:
      - /nuoyis-server/gitlab/runner:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      nuoyis-net:
        aliases:
          - nuoyis-gitlab-runner
networks:
  nuoyis-net:
    name: nuoyis-net
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.223.0/24
          gateway: 192.168.223.1

首先docker-compose启动,然后再去编写gitlab-runner

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose -f gitlab.yaml up -d

gitlab-runner 启动文件编写 首先获取token(修改链接快速访问),访问后在右边三个点内

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://IP:2236/admin/runners
{D7A859D3-157D-4245-B77F-49C726323FE6}.png
{D7A859D3-157D-4245-B77F-49C726323FE6}.png
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat > /nuoyis-server/gitlab/runner/config.toml << EOF
concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "nuoyis-runner"
  url = "http://192.168.223.1:2236/"
  id = 1
  token = "gitlab生成的token"
  token_obtained_at = 2025-03-13T19:16:59Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:20.10.8"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]
    shm_size = 0
    network_mtu = 0
EOF

在物理机上使用git上传项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir nuoyis-lnmp-np
# 把东西复制一个目录里或者提前有目录
# 有目录写法
# rm -rf .git
# 创建目录写法
# mv ./* 
# cd nuoyis-lnmp-np
git init
git config --global user.name "nuoyis"
git config --global user.email "nuoyis@nuoyis.net"
# main分支可以切换别的分支
git checkout -b main
git add .
git commit -m "初次上传"
git remote add origin http://IP地址:2236/nuoyis(用户名)/nuoyis-lnmp-np(库名).git
git pull origin main
git push -u origin main

gitlab docker构建 .gitlab.yml 编写示范 首先在库的根目录创建build.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "nuoyis-lnmp-np",
  "version": "0.1.3"
}

然后获取token并填入(修改后访问快速到达)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://IP:2236/用户/库名/-/settings/access_tokens
http://IP:2236/用户/库名/-/settings/ci_cd#js-cicd-variables-settings

再在根目录下创建.gitlab.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stages:
  - build
  - deploy

nuoyis_image_tag:
  image: ubuntu:20.04
  stage: build
  except:
    - build.json
    - README.md
  script:
    - echo "Changing to domestic mirrors for faster package installation"
    - cp /etc/apt/sources.list /etc/apt/sources.list.bak  # 备份原始源列表
    - sed -i 's/http:\/\/archive.ubuntu.com/https:\/\/mirrors.aliyun.com/g' /etc/apt/sources.list  # 更换为阿里云镜像源
    - sed -i 's/http:\/\/security.ubuntu.com/https:\/\/mirrors.aliyun.com/g' /etc/apt/sources.list  # 更换为阿里云镜像源
    - apt-get -o Acquire::https::Verify-Peer=false -o Acquire::https::Verify-Host=false update -y && apt-get -o Acquire::https::Verify-Peer=false -o Acquire::https::Verify-Host=false upgrade -y && apt-get -o Acquire::https::Verify-Peer=false -o Acquire::https::Verify-Host=false install -y ca-certificates  # 更新源列表
    - apt-get install -y git curl build-essential jq  # 安装常用工具,如 git, curl 等
    - current_version=$(jq -r '.version' build.json)
    - IFS='.' read -ra version_parts <<< "$current_version"
    - ((version_parts[2]++))
    - new_version="${version_parts[0]}.${version_parts[1]}.${version_parts[2]}"
    - jq ".version = \"$new_version\"" build.json > temp.json
    - mv temp.json build.json
    - git config user.name "nuoyis"
    - git config user.email "nuoyis@nuoyis.net"
    - git remote rm origin
    - git remote add origin http://oauth2:$GitLab_Access_Tokens@你的IP:2236/nuoyis/nuoyis-lnmp-np.git
    - git add build.json
    - git commit -m "use to $new_version"
    - git push origin HEAD:main -o ci.skip
    - echo "VERSION=$new_version" > nuoyis.env
  artifacts:
    paths:
      - nuoyis.env
  only: 
    - main

nuoyis_image_build:
  image: docker:20.10.8
  timeout: 10 hours
  stage: deploy
  dependencies:
    - nuoyis_image_tag
  services:
    - name: docker:20.10.8-dind
      alias: docker
      command: ["--insecure-registry=0.0.0.0/0"]
  variables:
    DOCKER_DRIVER: overlay2  # 使用 overlay2 存储驱动
  script:
    - export $(cat nuoyis.env | xargs)
    - echo $VERSION
    - echo "Building Docker image..."
    - docker build --no-cache -t "nuoyis-lnmp-np:$VERSION" -f ./dockerfile/dockerfile .
    - docker tag "nuoyis-lnmp-np:$VERSION" "registry.cn-hangzhou.aliyuncs.com/nuoyis/nuoyis-lnmp:$VERSION"
    - docker tag "nuoyis-lnmp-np:$VERSION" "registry.cn-hangzhou.aliyuncs.com/nuoyis/nuoyis-lnmp:latest"
    - 'docker login --username=$DOCKER_USERNAME --password=$DOCKER_PASSWORD registry.cn-hangzhou.aliyuncs.com'
    - docker push registry.cn-hangzhou.aliyuncs.com/nuoyis/nuoyis-lnmp:latest
    - docker push registry.cn-hangzhou.aliyuncs.com/nuoyis/nuoyis-lnmp:$VERSION
  only:
    - main

流水线执行检测

2025-03-15T11:11:47.png
2025-03-15T11:11:47.png

流水线发布

2025-03-15T11:09:58.png
2025-03-15T11:09:58.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
可以,大佬,互粉一下
可以,大佬,互粉一下
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Docker安装Gitlab和Gitlab-Runner并实现项目的CICD
介绍如何在Linux系统使用Docker安装Gitlab、Gitlab-Runner并实现项目的CICD
薛定喵君
2019/11/05
2.9K0
我是这样考虑 gitlab ci 大文件构建依赖镜像的
现在要做某个 arm 平台的的交叉编译环境, 交叉编译依赖和工具包大小 5G 左右, 特别大。
老麦
2022/12/24
6690
我是这样考虑 gitlab ci 大文件构建依赖镜像的
Gitlab持续集成中Dood与Dind应该怎么玩?
在通过jenkins或Gitlab使用Docker容器化构建服务的时候,我们会遇到两种构建的方式,分别是DIND与DOOD,这两种的构建的方式却有着很大的差异,接下来分别介绍两种构建方式的区别:
公众号: 云原生生态圈
2020/11/02
4.9K2
Gitlab持续集成中Dood与Dind应该怎么玩?
Golang基于Gitlab CI/CD部署方案
持续集成 (Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
李海彬
2018/09/29
3K0
Golang基于Gitlab CI/CD部署方案
Docker搭建自己的Gitlab CI Runner
哎_小羊
2018/01/02
15K0
Docker搭建自己的Gitlab CI Runner
GitLab Runner介绍及安装
GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab CI是GitLab随附的开源持续集成服务,用于协调作业。
没有故事的陈师傅
2021/03/19
7.3K0
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服务持续集成
环境 Centos7.0 准备工作 序号 IP地址 主机名称 角色 A 192.168.100.10 gitlab gitlab、gitlab-runner、docker本地仓库、(K8S-Master) B 192.168.100.11 rancher rancher、k8s节点服务器1 C 192.168.100.12 node1 k8s节点服务器2 D 192.168.100.13 node2 k8s节点服务器3 E 192.168.100.14 node3 k8s节点服务器4 01
安徽开发者圈
2020/03/02
1.2K0
Golang基于Gitlab CI/CD部署方案
持续集成 (Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
李海彬
2018/12/24
1.5K0
基于gitlab gitlab-runner的cicd部署
在本文中,我将介绍如何基于 GitLab 和 GitLab Runner 进行 CI/CD 部署。GitLab 是一个强大的 Git 仓库管理系统,提供了完整的 CI/CD 管理功能。GitLab Runner 是一个用于运行 CI/CD 作业的轻量级容器化工具。我们将使用 Docker 容器来运行 GitLab 和 GitLab Runner。
堕落飞鸟
2023/03/27
1.5K0
在 Gitlab 中构建 Docker 镜像
有了 Gitlab CI 的脚本能力,又有容器镜像仓库的支持,自然的一个想法就是,在 Gitlab 上构建容器镜像,并推送到镜像仓库之中。
崔秀龙
2019/07/22
2.5K0
在 Gitlab 中构建 Docker 镜像
使用GitLab构建Docker镜像并托管
容器化正迅速成为在云环境中打包和部署应用程序的最常用方法。它提供的标准化,以及其资源效率和灵活性,使其成为现代DevOps思维模式的重要推动者。当您的应用程序和微服务完全集装箱化时,许多有趣的云本机部署,编排和监控策略都成为可能。
司徒永哥
2018/08/06
4.7K0
使用GitLab构建Docker镜像并托管
1.基于GitLab代码仓库的持续集成基础配置和使用
[TOC] 0x00 前言简述 CI/CD介绍 Q:我们常说的CI/CD是什么? CI 为 Continuous Integration 的缩写持续集成,可以理解为代码变动提交后,自动执行代码编译、代
全栈工程师修炼指南
2022/09/29
3.8K0
1.基于GitLab代码仓库的持续集成基础配置和使用
Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner
缓存,项目里用到的各种依赖,不可能每次都下载,以及构建、语法检测等都会产生缓存。在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,上传缓存。当前项目整个流水线跑下来需要10多分钟。而是用docker部署的runner,时间减少到3分钟,因为使用的本地磁盘来保存缓存。
Yuyy
2022/09/21
2K0
Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner
gitlab-ci的简易入门—基于python项目的CI演示
使用github上开源的一个python的demo项目,地址为:https://github.com/imooc-course/docker-cloud-flask-demo 打开自己的gitlab,点击New project,把项目导入。
没有故事的陈师傅
2020/07/01
3.9K0
gitlab-ci的简易入门—基于python项目的CI演示
Git——Docker搭建GitLab&简单的Runner配置
GitLab是一个开源的用于仓库管理的项目,和GitHub一样是使用Git作为代码管理工具。
不愿意做鱼的小鲸鱼
2022/09/26
2.3K0
Git——Docker搭建GitLab&简单的Runner配置
依托于GitLab持续集成基础配置和使用
[TOC] 0x00 前言简述 Q:我们常说的CI/CD是什么? CI 为 Continuous Integration 的缩写持续集成,可以理解为代码变动提交后,自动执行代码编译、代码打包、代码测试
全栈工程师修炼指南
2020/10/23
2.2K0
依托于GitLab持续集成基础配置和使用
基于 Docker 的 Jenkins 持续集成与持续部署
基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。
Criss@陈磊
2019/10/14
8950
基于 Docker 的 Jenkins 持续集成与持续部署
图文详解k8s自动化持续集成之GitLab CI/CD
  如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
sunsky
2020/08/20
5K0
图文详解k8s自动化持续集成之GitLab CI/CD
docker 套娃在CI中应用解析
docker里嵌套运行docker,本文讲解其在jenkins和gitlab-runner 中的调用流程
锅总
2024/06/12
1810
docker 套娃在CI中应用解析
Gitlab安装使用及汉化配置
一、GitLab简介 GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且将项目设为私有还要收费。GitLab 是一个用于
shaonbean
2018/01/02
6.5K0
推荐阅读
相关推荐
Docker安装Gitlab和Gitlab-Runner并实现项目的CICD
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验