Gitlab+CI+Docker自动部署简单样例记录

1.前言

最近申请了华为云的服务器,闲来无事搭建一个简单的CI+Docker自动部署的样例,中间花费了两天时间四处百度解决各种问题,终于是做成了。记录下过程对搭建过程做一个复盘。

2.Linux搭建Gitlab

现在很多公司都是使用开源的Gitlab作为公司代码管理工具,并且Gitlab中集成了Runner便于后面搭建CI相关环境。所以需要先搭建Gitlab.
由于是自己的云服务器,直接使用root账号连接云服务器
1. 安装gitlab

  [root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server        #安装依赖
  
 [root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm        #下载软件包
 
[root@gitlab ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm    #安装gitlab

在这里插入图片描述

如图上所示就gitlab就安装成功了

2. 修改默认的gitlab访问地址

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb      #编辑配置文件  
#改为自己的IP地址 也可以添加端口,默认端口为80,如果服务器80端口占用就需要修改
external_url 'http://192.168.0.112:9092'
[root@gitlab ~]# gitlab-ctl reconfigure    #重新加载配置文件  

3.访问

直接输入http://192.168.0.112:9092地址访问,默认账号为root  默认密码为5iveL!fe
第一次登录后会提示修改密码,这样Gitlab就搭建好了 如果需要汉化

4. 汉化
由于当前的英语版本,Gitlab也可以支持中文需要重新按照gitlab汉化包

 下载汉化补丁
[root@gitlab ~]# git clone https://gitlab.com/xhang/gitlab.git
[root@gitlab ~]# cd gitlab    
查看全部分支版本
[root@gitlab ~]# git branch -a
对比版本、生成补丁包
[root@gitlab ~]# git diff remotes/origin/10-2-stable remotes/origin/10-2-stable-zh > /tmp/10.2.2-zh.diff
停止服务器
[root@gitlab ~]# gitlab-ctl stop
打补丁
[root@gitlab ~]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /tmp/10.2.2-zh.diff
启动和重新配置
[root@gitlab ~]# gitlab-ctl start
[root@gitlab ~]# gitlab-ctl reconfigure

3.Linux搭建Docker

1.安装Docker

 #查看是否已安装docker列表
 yum list installed | grep docker
 # 安装docker  默认安装最新版本  在docker后面也可指定版本号    -y表示不询问安装一直到安装成功
 yum -y install docker 
 # 启动docker 
 systemctl start docker 
 # 暂停docker
 systemctl stop docker
 # 查看docker状态
 systemctl status docker 
 # 设置为docker开机自启动
 systemctl enable docker.service  

2. 安装GitlabCI自动部署Runner

 $ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
 $ yum install gitlab-ci-multi-runner

3. Gitlab项目指定runner

在这里插入图片描述

   $ gitlab-ci-multi-runner register   
   下面为注册runner的步骤
	#引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
	#引导会让你输入token,去相应的项目下找到token,例如ase12c235qazd32
	#引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy
	#引导会问你是否无tag也触发自动部署,我这里为了方便测试,选择的true
	#引导会问你是否锁定此runner仅为此项目锁定,我这里选的默认否
	#引导会让你输入executor,这个是要用什么方式来执行脚本,输入shell就好了。

4.创建项目

1. 创建测试项目
需要在pom文件中配置下列参数 配置jar包名称和docker镜像名称
在这里插入图片描述

在这里插入图片描述
2.构建Docker镜像 创建Dockerfile文件

 在pom文件中dockerDirectory中指定目录下创建Dockerfile文件
 Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。
 
FROM:指定基础镜像,必须为第一个命令 一般Java项目都指定openJDK
MAINTAINER: 维护者信息
RUN:构建镜像时执行的命令
ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
ENV:设置环境变量
EXPOSE:指定于外界交互的端口

# 示例
FROM openjdk:8-jdk-alpine

VOLUME /tmp

ADD cutomer-docker-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在这里插入图片描述

3.创建.gitlab-ci.yml

	# 脚本执行之后删除该镜像(为了不与下次镜像打包冲突)
after_script:
  - docker rmi $( docker images -q -f dangling=true)

#定义几个流程(job),这里是定义了三个自动化流程
stages:
  - dev


job_deploy:
  # 指定流程
  stage: dev
  script:
    # 通过Dockerfile生成镜像
    - mvn package docker:build
    # 删除已经在运行的容器
    - if [ $(docker ps -aq --filter name=cutomer-docker) ]; then docker rm -f cutomer-docker;fi
    # 通过镜像启动容器,并把本机端口映射到容器端口
    - docker run -d -p 8070:8080 --name cutomer-docker springboot/cutomer-docker
  only:
    # 指定gitlab分支名称
    - dev

在这里插入图片描述
推送到代码到Gitlab中可以看到
在这里插入图片描述 4. 启动成功可以在服务器中查看
# 查看镜像

docker images 

在这里插入图片描述
#查看容器列表
docker ps
在这里插入图片描述
#查看容器日志

docker logs -f -t --tail 50  容器名称  后面是容器名称
#进入容器
docker exec -it 容器名称 sh  

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值