微服务容器部署与 jenkins 持续集成

Dockerfile 创建镜像

什么是 Dockerfile

Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。

常用命令

命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条)
RUN command是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录
EXPOSE port1 prot2用来指定端口,使容器内的应用可以通过端口和外界交互
CMD argument在构建容器时使用,会被docker run 后的argument覆盖
ENTRYPOINT argument和CMD相似,但是并不会被docker run指定的参数覆盖
VOLUME

使用脚本创建镜像

本例创建一个 jdk8 的镜像
① 下载 jdk-8u171-linux-x64.tar.gz 并上传到服务器(虚拟机)中的 /usr/local/dockerjdk8 目录
② 创建文件 Dockerfile

#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

③ 执行命令(Dockerfile 文件要和 jdk-8u171-linux-x64.tar.gz 在同一文件夹下)

docker build ‐t='jdk1.8' .

注意后边的空格和点,不要省略

Docker 私有仓库

如果我们每次都需要创建镜像的话,太麻烦了,所以我们可以将创建好的镜像放到镜像仓库中,下次用的时候直接从仓库中拿就可以了

私有仓库的搭建与配置

① 拉取私有仓库镜像

docker pull registry

② 启动私有仓库容器

docker run ‐di ‐‐name=registry ‐p 5000:5000 registry

③ 打开浏览器 输入地址 http://192.168.184.135:5000/v2/_catalog 看到 {“repositories”:[]} 表示私有仓库搭建成功并且内容为空
④ 修改 daemon.json

vi /etc/docker/daemon.json

添加以下内容,保存退出:

{"insecure‐registries":["192.168.184.135:5000"]}

此步用于让 docker 信任私有仓库地址
⑤ 重启 docker 服务

systemctl restart docker

镜像上传至私有仓库

① 标记此镜像为私有仓库的镜像

docker tag jdk1.8 192.168.184.135:5000/jdk1.8

② 再次启动私服容器

docker start registry

③ 上传标记的镜像

docker push 192.168.184.135:5000/jdk1.8

Docker Maven 插件创建镜像

使用 Dockerfile 创建镜像可以,但是太麻烦了,步骤是固定的,每次创建完还需要再上传到镜像仓库中。但是我们可以借助 maven 插件,融合成一条命令,在生成镜像的时候,同时又把镜像上传到镜像仓库中
① 修改宿主机的docker配置,让其可以远程访问

vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置 ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock
修改后如下:
在这里插入图片描述
② 刷新配置,重启服务

systemctl daemon‐reload
systemctl restart docker
docker start registry

③ 修改微服务的 pom 文件,添加 docker maven 插件

<build>
    <finalName>app</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!-- docker的maven插件,官网:https://github.com/spotify/docker‐maven‐plugin -->
      <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.4.13</version>
        <configuration>
          <imageName>192.168.227.129:5000/${project.artifactId}:${project.version}</imageName>
          <baseImage>jdk1.8</baseImage>
          <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
          <resources>
            <resource>
              <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
              <include>${project.build.finalName}.jar</include>
            </resource>
          </resources>
          <dockerHost>http://192.168.227.129:2375</dockerHost>
        </configuration>
      </plugin>
    </plugins>
  </build>

以上配置会自动生成 Dockerfile
④ 在工程所在目录,输入命令:mvn clean package docker:build ‐DpushImage
在这里插入图片描述
⑤ 进入宿主机 , 查看镜像:docker images,如果存在则微服务已经生成镜像

运用Jenkins实现持续集成

jenkins 介绍

Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
特点:

  • 易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
  • 易配置:提供友好的GUI配置界面;
    - 变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
  • 支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
  • 集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
  • JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
  • 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
  • 文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
  • 支持第三方插件:使得 Jenkins 变得越来越强大

jenkins 安装

(1)下载jenkins
	wget https://pkg.jenkins.io/redhat/jenkins‐2.83‐1.1.noarch.rpm
(2)安装jenkins
	rpm ‐ivh jenkins‐2.83‐1.1.noarch.rpm
(3)配置jenkins
	vi /etc/sysconfig/jenkins
	修改用户和端口:
		JENKINS_USER="root"
		JENKINS_PORT="8888"
(4)启动服务
	systemctl start jenkins
(5)访问链接 http://192.168.184.135:8888
	从 /var/lib/jenkins/secrets/initialAdminPassword 中获取初始密码串

jenkins 插件安装

jenkins 持续集成主要用到2个插件,git 和 maven
(1)点击左侧的“系统管理”菜单 ,然后点击
在这里插入图片描述
(2)选择“可选插件”选项卡,搜索maven,在列表中选择Maven Integration ,点击“直接安装”按钮
在这里插入图片描述
同上,搜索 git
在这里插入图片描述
在安装插件的过程中很可能会失败,如果失败可以参考这篇文章:Jenkins插件安装失败处理方法

全局工具配置

(1)先安装 maven,创建本地仓库
  编辑 setting.xml 配置文件,配置本地仓库目录,内容如下<localRepository>/usr/local/repository</localRepository>
  然后将本地的仓库上传至虚拟机
(2)选择系统管理,全局工具配置
  ① JDK配置
    在这里插入图片描述
    设置 javahome 为 /usr/java/jdk1.8.0_171-amd64
  ② git 配置
    git 不用改动
  ③ Maven配置
    在这里插入图片描述

持续集成

(1)回到首页,点击新建按钮 。如下图,输入名称,选择创建一个Maven项目,点击OK
在这里插入图片描述
(2)源码管理,选择Git
在这里插入图片描述
(3)Build
  命令:clean package docker:build ‐DpushImage
在这里插入图片描述
最后点击“保存”按钮
(4)返回首页,执行任务
在这里插入图片描述
看到下面的结果,就表明构建成功了
在这里插入图片描述
(5)测试
启动构建好的镜像,在地址栏中输入地址,可以看到能够得到数据
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值