Docker CI

CI 、CD引言

项目部署

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

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

  • 将war包放到tomcat的目录中

  • 通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器

项目更新后,需要将上述流程再次的从头到尾的执行一次,如果每次更新一次都执行一次上述操作,很费时,费力。我们就可以通过CI、CD帮助我们实现持续集成,持续交付和部署。

 

CI介绍

CI(continuous intergration)持续集成

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

  • 快速发现错误。

  • 防止代码偏离主分支。

 

搭建Gitlab服务器

实现CI,需要使用到Gitlab远程仓库,先通过Docker搭建Gitlab

准备工作

  • 创建一个全新的虚拟机,并且至少指定4G的运行内存,4G运行内存是Gitlab推荐的内存大小。

  • 并且安装Docker以及Docker-Compose

修改ssh的22端口

将ssh的默认22端口,修改为60022端口,因为Gitlab需要占用22端口

vi /etc/ssh/sshd_config
  PORT 22 -> 60022
systemctl restart sshd

 

编写docker-compose.yml

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

  ip改为自己的ip

version: '3.1'
services:
 gitlab:
  image: 'twang2218/gitlab-ce-zh:11.1.4'
  container_name: "gitlab"
  restart: always
  privileged: true
  hostname: 'gitlab'
  environment:
   TZ: 'Asia/Shanghai'
   GITLAB_OMNIBUS_CONFIG: |
    external_url 'http://192.168.75.135'
    gitlab_rails['time_zone'] = 'Asia/Shanghai'
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['gitlab_shell_ssh_port'] = 22
  ports:
   - '80:80'
   - '443:443'
   - '22:22'
  volumes:
   - /opt/docker_gitlab/config:/etc/gitlab
   - /opt/docker_gitlab/data:/var/opt/gitlab
   - /opt/docker_gitlab/logs:/var/log/gitlab

 

 

搭建GitlabRunner

准备环境

  • 创建工作目录 /opt/docker_gitlab-runner

  • 将提供好的docker-compose.yml文件以及environment目录全部复制到上述目录中

  • 在宿主机启动docker程序后先执行 sudo chown root:root /var/run/docker.sock (如果重启过 docker,重新执行)

  • /opt/docker_gitlab-runner 目录中执行docker-compose up -d 启动容器

environment 目录

 提供的 yml

 

 

 

 

启动完成之后 gitlab-runner 安装完毕,但是该容器还缺少以下环境

  • jdk

  • maven

  • docker-compose

gitlab-runner容器中安装jdk

 

#切到environment 目录下

cd environment

#复制jdk到gitlab-runner容器中  //这里的dd1  是gitlab-runner容器的id
docker cp jdk-8u231-linux-x64.tar.gz dd1:/usr/local/jdk/ 


#进入gitlib-runner 容器
docker exec -it gitlab-runner的id  bash

#进入容器jdk目录
cd /usr/local/jdk

#解压 jdk
tar -zxvf  jdk-8u231-linux-x64.tar.gz


配置环境变量

echo "export JAVA_HOME=/usr/local/jdk/jdk1.8.0_231" >>/etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >>/etc/profile


#使环境变量生效
source /etc/profile

#任意目录查看 是否成功
java -version

容器内部没有jdk目录要进去创建

 

 

容器中安装 maven

#复制maven压缩包
docker cp apache-maven-3.6.3-bin.tar.gz dd1:/usr/local/mvn/


#进入gitlib-runner 容器
docker exec -it gitlab-runner的id  bash


#进入容器maven目录
cd /usr/local/mvn


#解压maven
tar -zxvf apache-maven-3.6.3-bin.tar.gz


#查看maven目录
pwd

容器内部也没有mvn  也要创建

 

 

容器中安装docker-compose

#复制docker-compose 到容器内部

docker cp docker-compose dd1:/usr/local/bin/

#进入gitlib-runner 容器
docker exec -it gitlab-runner的id  bash

#进入docker-compose安装目录
cd /usr/local/bin/

#授权
chmod 777 docker-compose

#任意目录测试 docker-compose
docker-compose

访问gitlab

直接写宿主ip访问

 获得url 跟令牌

 

 

第一次注册 默认用户是 root 你写个密码就行

#添加容器权限,保证容器可以使用宿主机的
docker exec -it gitlab-runner usermod -aG root gitlab-runner

#注册Runner信息到gitlab
docker exec -it gitlab-runner gitlab-runner register

输入url 令牌   脚本选择shell    tags  deploy

 

 安装完成

整合项目入门测试

创建maven工程,添加web.xml文件,编写html页面

 

 dockerfile

FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY TestCI.war /usr/local/tomcat/webapps

docker-compos.yml

version: "3.1"
services:
  #服务名
  testci:
    build: docker
    restart: always
    # 容器名
    container_name: testci
    ports:
      - 8080:8080

.gitlab-ci.yml

stages:
  - test

test:
  stage: test
  script:
    - echo first test ci
    - /usr/local/mvn/apache-maven-3.6.3/bin/mvn package
    - cp target/TestCI.war docker/TestCI.war
    - docker-compose down
    - docker-compose up -d --build

  tags:
    - deploy

gitlab 创建项目  获得远程链接

 

 这个idea项目相当于创建了一个 testci的容器

 

项目变成  git   ,提交上传到远程仓库

这时候,只要改变idea,提交,上传 ,远程仓库就可以收到

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins和Docker可以结合使用来实现CI/CD(持续集成/持续交付)流程。下面是一种常见的实现方式: 1. 安装和配置Jenkins:首先,你需要在你的服务器或本地机器上安装和配置Jenkins。你可以按照Jenkins官方文档提供的步骤进行安装和配置。 2. 安装Docker:接下来,你需要安装Docker,并确保Docker服务正在运行。你可以根据你的操作系统在Docker官方网站上找到相应的安装说明。 3. 创建Jenkins的CI/CD Pipeline:在Jenkins,你可以创建一个Pipeline来定义你的CI/CD流程。Pipeline是一种将多个步骤组合在一起的方式,可以通过代码进行定义和版本控制。你可以使用Jenkins的Pipeline语法或者使用Jenkins插件来定义你的Pipeline。 4. 定义Jenkins Pipeline的步骤:在你的Pipeline,你可以定义多个步骤来完成CI/CD流程。以下是一个可能的步骤示例: - 从代码仓库拉取代码 - 构建Docker镜像 - 运行单元测试 - 部署到测试环境 - 运行集成测试 - 部署到生产环境 5. 使用Docker构建和管理镜像:在上述步骤,使用Docker构建和管理镜像是关键。你可以使用Dockerfile来定义镜像的构建过程,并使用Jenkins Pipeline的相关步骤来执行构建。 6. 集成其他工具:你可以通过Jenkins插件或其他方式集成其他工具,如代码质量检查工具、部署工具等,以实现更完整的CI/CD流程。 这只是一个简单的概述,实际的CI/CD流程可以根据你的项目需求和团队实践进行定制和扩展。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值