当前位置: 首页 > news >正文

docker CI操作演示分享(第四期)

引言

java项目:

1、将项目通过maven进行编译打包

2、将文件上传到指定的服务器中

3、将war包放到tomcat的目录中

4、通过Dockerfile将tomcat和war包转成一个镜像,由docker-compose去运行容器

项目更新后:将上述流程再次的从头到尾的执行一次

go项目:

1、将项目通过go build编译成二进制执行文件打包(或者直接将项目代码打包压缩)

2、将文件上传到指定的服务器中

3、解压文件到指定目录

4、通过Dockerfile将go build后的二进制文件转成一个镜像,由docker-compose去运行容器 项目更新后:将上述流程再次的从头到尾的执行一次

CI介绍和实现

CI (continuous intergration) 持续集成

持续集成:编写代码时,完成一个功能后,立即提交代码到git仓库中,将项目重新构建并测试。

1、快速发现错误

2、阻止代码偏离主分支

实现持续集成

  • 搭建gitlab服务器

1、创建一个全新的虚拟机,并且只是指定4G运行内存

2、安装docker以及docker-compose

3、docker-compose.yml文件去安装gitlab(下载和运行的时间比较长)

4、将ssh的默认端口22修改为60022 vim /etc/ssh/sshd_config 修改 port 22 --> 60022 systemctl restart sshd

docker-compose.yml文件

version: '2'
services:gitlab:image: 'gitlab/gitlab-ce:12.4.1-ce.0'restart: alwayscontainer_name: gitlabhostname: 'gitlab'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://47.119.16.196'nginx['enable'] = truenginx['redirect_http_to_https'] = truenginx['redirect_http_to_https_port'] = 80# 开启 pages 功能pages_external_url 'http://47.119.16.196'gitlab_pages['inplace_chroot'] = truegitlab_rails['lfs_enabled'] = true# 设置时区为北京时间gitlab_rails['time_zone'] = 'PRC'gitlab_rails['gitlab_email_enabled'] = truegitlab_rails['gitlab_email_from'] = 'code@example.com'gitlab_rails['gitlab_email_display_name'] = 'code'gitlab_rails['gitlab_email_reply_to'] = 'code@example.com'gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = 'smtp.exmail.qq.com'gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = 'code@example.com'gitlab_rails['smtp_password'] = '******'gitlab_rails['smtp_domain'] = 'exmail.qq.com'gitlab_rails['smtp_authentication'] = 'login'gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = trueunicorn['worker_processes'] = 2unicorn['worker_timeout'] = 60sidekiq['concurrency'] = 4# 解决 GitLab 响应 Forbiddengitlab_rails['rack_attack_git_basic_auth'] = {'enabled' => true, 'ip_whitelist' => ["0.0.0.0"], 'maxretry' => 300, 'findtime' => 5, 'bantime' => 60}# 内存和CPU限制,worker_processes 配置声明使用2核CPUmem_limit: 5500mcpu_shares: 200 #2核ports:- '443:443'- '80:80'- '22:22'volumes:# 挂载宿主机目录可以根据实际情况挂载- '/opt/gitlab-docker/config:/etc/gitlab'- '/opt/gitlab-docker/logs:/var/log/gitlab'- '/opt/gitlab-docker/data:/var/opt/gitlab'- '/etc/localtime:/etc/localtime'

执行命令

docker-compose up -d
  • 搭建gitlab-runner

步骤:

1、环境准备

创建目录:/opt/gitlab-runner

配置daemon.json,私有化仓库

{"registry-mirrors": ["https://registry.docker-cn.com"],"insecure-registries": ["39.108.227.113:5000"]
}

复制这个daemon.json 到/etc/docker/,并执行下面命令 

systemctl daemon-reload
systemctl restart docker

 2、在/opt/gitlab-runner目录下创建一个docker-compose.yml文件

version: 'v2.2.2'
services:gitlab-runner:image: gitlab/gitlab-runnerrestart: alwayscontainer_name: gitlab-runnerprivileged: truevolumes:- ./config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.sock

然后执行命令

sudo chown root:root /var/run/docker.sock

最后启动容器

docker-compose up -d --build

3、添加容器权限

保证容器可以使用宿主机器的docker,执行下面命令

docker exec -it gitlab-runner usermod -aG root gitlab-runner

4、注册Runner信息到gitlab

docker exec -it gitlab-runner gitlab-runner register#输入gitlab地址
Please enter the gitlab-ci coordinator URL
http://106.55.229.11/#输入gitlab token
Please enter the gitlab-ci token for this runner:
xXapfgMsA_6eG5YUzTKb#输入runner 说明,这里取个名字就可以了#设置tag,可以用于指定在构建规定的tag时触发ci
Please enter the gitlab-ci tags for this runner : 
deploy。。。

http://www.dtcms.com/a/341309.html

相关文章:

  • Fastdata极数:中国外卖行业趋势报告2025
  • 网络流量分析——基础知识
  • [特殊字符] 从文件到视频:日常数据修复全攻略
  • 奇怪的“bug”--数据库的“隐式转换”行为
  • Kafka如何保证消费确认与顺序消费?
  • Torch -- 卷积学习day4 -- 完整项目流程
  • python numpy.random的基础教程(附opencv 图片转数组、数组转图片)
  • 3D max制作蝴蝶结详细步骤(新手可跟)♥️
  • 制造业原料仓储混乱?WMS 系统实现物料精准溯源,生产更顺畅_
  • 深度剖析Lua Table的运作方式
  • 透传 Attributes(详细解析)1
  • 服务器内存使用buff/cache的原理
  • Linux-----《Linux系统管理速通:界面切换、远程连接、目录权限与用户管理一网打尽》
  • 以AI技术为核心的变电设备声纹监测装置及方案特色解析
  • AI时代下阿里云基础设施的稳定性架构揭秘
  • 初试Docker Desktop工具
  • 服务器硬件电路设计之 SPI 问答(二):SPI 与 I2C 的特性博弈及多从机设计之道
  • Java ReentrantLock 核心用法
  • 算法提升树形数据结构-(线段树)
  • RAG拓展、变体、增强版(二)
  • Django管理后台结合剪映实现课件视频生成应用
  • SpringBoot+Vue打造动漫活动预约系统----后端
  • BM25 系列检索算法
  • Python Day32 JavaScript 数组与对象核心知识点整理
  • 用 Go 库 urfave/cli 轻松构建命令行程序
  • Linux上安装多个JDK版本,需要配置环境变量吗
  • STM32存储结构
  • Vue3 结合 html2canvas 生成图片
  • GISBox工具:FBX到3DTiles文件转换指南
  • SpringBoot - 公共字段自动填充的6种方案