基于docker搭建jenkins+maven代码构建部署平台

标签: docker jenkins
12人阅读 评论(0) 收藏 举报

由于项目开发,经常需要在本地搭一些环境进行开发或测试,大家知道搭环境、装软件、装中间件是件非常麻烦的事情,有些软件的安装可能需要依赖其它环境的安装,如安装rabbitmq首先需要Erlang语言环境,一整套安装下来不仅浪费时间而且还各种问题出现,严重影响开发进度。对于开发者来讲,life is short, 尽一切可能提高开发效率。
Docker的出现对于技术界无疑是一件划时代的事件,Docker由于具体丰富的应用镜像仓库、使用方便及可移植性而深受广大IT从业人员喜爱。用Docker部署或安装相应的应用不用花太多时间在安装过程及细节、依赖上,真正做到开箱即用。本文以jenkins的搭建为例,说明Docker的基本操作过程:拉取镜像、运行容器、文件挂载、跟踪运行、关闭容器等,希望对刚入门Docker的技术爱好者能有所帮助。

Docker基本概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。其实Docker最经典的是那张“背有集装箱的海豚”图,这张图充分说明了docker引擎与容器之间的关系。
掌握镜像、容器、仓库基本就对Docker了解得差不多了,就能正确的使用Docker.

  • 镜像:可以理解为应用的“源码”或.exe安装文件;
  • 容器:就是镜像运行后的实例,与镜像的关系其实就如“对象”与“类”的关系;
  • 仓库:发布镜像的仓库,在仓库中可以下载或拉取各种镜像(应用)
    而Docker则是一个容器运行所需要的引擎,所有的容器均运行在引擎之中。

Docker安装过程(Centos6.9)

  • 升级内核
    Centos6.9需要升级内核版本才可以安装Docker,升级过程如下
    1.引入key
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
    2.yum安装
    yum --enablerepo=elrepo-kernel -y install kernel-lt
    3.引导文件修改(grub.conf
    vim /etc/grub.conf
    将 default 设置为 0 ,default=0
    4.重启

  • 安装docker-io
    1.安装EPEL源
    yum install http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
    2.安装docker-io
    yum -y install docker-io
    3.启动docker服务
    service docker start

基于Docker的jenkins安装

  • 拉取应用

运行容器/实例之前,需要从docker hub仓库中拉取相应的镜像,可查看官网关于jenkins镜像上的一些介绍,其中对于安装命令、配置信息及文件目录都有于详细的说明。
从仓库中拉取最新的jenkins,docker pull jenkins,拉取其它版本的可通过命令docker pull jenkins:<version>

  • 运行容器

运行容器/实例,需要考虑到本地端口与docker容器的映射,以便通过本地主机可以访问。由于容器本身并不会持久化文件,其实docker不建议在容器中进行任何文件有关的写入操作,仅仅当作一个“容器”使用。如果容器应用运行过程中会产生许多重要的数据需要保存或配置,如mysql的db文件,jenkins的插件、配置文件等,则建议将容器的文件挂载到本地,也即volume映射。
docker run -p 8080:8080 -p 50000:50000 -v /usr/local/docker_volume/jenkins:/var/jenkins_home -v /usr/local/apps/maven-3.3.9:/var/maven_home -v /usr/local/apps/maven-3.3.9/repo:/usr/local/apps/maven-3.3.9/repo --name my_jenkins -d jenkins
其中-p表示端口映射,即将本机上的端口映射到容器上的端口;
-v表示文件映射,即本机与容器共享映射,挂载文件
注意:由于jenkins构建maven项目需要依赖maven项目,因此在运行容器的时候将本机的maven_home共享给容器。由于容器运行时需要在本机共享文件中写入,需要写权限,sudo chown -R 1000:1000 /usr/local/docker_volume/jenkins sudo chown -R 1000:1000 sudo chown -R 1000:1000

运行以上命令,窗口会打印容器id,通过docker ps可查看运行的容器状态及相关信息。

  • 跟踪应用log
    输入docker logs <CONTAINER ID>即可跟踪容器打印日志,初次启动jenkins会在日志中打印密码,复制后用于登陆jenkins.

  • 关闭打开容器
    关闭:docker stop <CONTAINER ID>
    打开:docker start <CONTAINER ID>

tomcat账户配置

本例将maven编译后的war部署到远程tomcat,因此需要在tomcat中设置部署权限,编辑/con/tomcat-users.xml配置文件,加入账户

<role rolename="tomcat"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="admin,manager,tomcat,manager-gui,manager-script,manager-jmx,manager-status"/>
<user username="root" password="admin" roles="admin,manager,tomcat,manager-gui,manager-script,manager-jmx,manager-status,admin-gui"/>

配置jenkins,构建部署war应用

至此,通过访问http://本机ip:8080即可访问到jenkins平台,选择默认安装插件,安装成功后选择设置账号等.

  • 配置JDK、Maven等参数
    在 “系统设置—> Global Tool Configuration”中添加JDK安装如下图所示
    set01

set_02

set_03

  • 安装“Deploy to container Plugin”插件用于部署war程序
    在”系统设置—> 管理插件—>可选插件”中安装

  • 新建任务构建部署
    添加svn源码地址、tomcat部署地址
    set_04

set_07

tomcat 部署配置,配置登录tomcat的账号
set_06

set_08

查看评论

使用docker搭建部署hadoop分布式集群

http://blog.csdn.net/xu470438000/article/details/50512442 使用docker搭建部署hadoop分布式集群 标签: do...
  • hnhbdss
  • hnhbdss
  • 2016年01月17日 11:58
  • 2192

RAP GUI式Web 接口管理平台

官方推荐地址:http://rapapi.org/org/index.doRAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, ...
  • boonya
  • boonya
  • 2018年02月19日 16:36
  • 196

活动干货|基于Docker的DevOps实现

通常情况下,传统开发模式转向DevOps的第一步是解决自动化问题。要想持续的集成代码,没有自动化测试来保证快速地进行合并后的验证,风险是很高的,而且没有自动化测试,测试环境很有可能成为整个开发环节的瓶...
  • ghostcloud2016
  • ghostcloud2016
  • 2017年03月16日 16:41
  • 2273

基于Docker一键部署整个大数据平台及其他微服务架构

随着大数据平台型产品方向的深入应用实践和Docker开源社区的逐渐成熟,业界有不少的大数据研发团队开始拥抱Docker。简单来说,Docker会让Hadoop平台部署更加简单快捷、让研发和测试团队集成...
  • qq_33161208
  • qq_33161208
  • 2018年03月17日 15:47
  • 144

基于Docker开发的PaaS平台 DINP

DINP是又一个基于Docker开发的PaaS平台。 DINP 包含如下组件: dinp-server master组件,控制集群中所有计算节点 dinp-agent Agent,部...
  • xiangxizhishi
  • xiangxizhishi
  • 2016年11月02日 21:52
  • 292

使用docker搭建前端开发环境方法步骤详解

本文和大家分享的是使用docker快速搭建前端开发环境的方法步骤,希望可以帮助大家更好的学习docker ,一起来看看吧。 一、解决痛点 1.免搭建前端静态环境 2.分支切换,无需重新启动编译(...
  • qq_32506555
  • qq_32506555
  • 2016年11月02日 22:31
  • 565

通过构建微服务来学习Docker

如果你正在寻找练手机会以便深入学习Docker,那么本文就是你最好的选择。在本文中,我将展示Docker是如何工作的,以及应用Docker完成构建一个基本的微服务开发任务。 我们将使用一个简单的...
  • wfg18801733667
  • wfg18801733667
  • 2016年08月22日 14:33
  • 6759

Flynn初探:基于Docker的PaaS平台

[Flynn](https://flynn.io/)是一个开源的PaaS平台,可自动构建部署任何应用到Docker容器集群上运行,其功能特性与组件设计大量参考了传统的PaaS平台[Heroku](ht...
  • TragicJun
  • TragicJun
  • 2014年11月19日 01:04
  • 8800

新手也能用docker搭建PHP环境

虽然这篇叫Docker环境搭建,但是是用了一个别人写好的配置文件,为什么要用别人写好的呢?因为第一节省了我们学习的成本,类似一键安装环境的东西。二节省了我们的构造docker和测试docker的时间。...
  • Dennis_ukagaka
  • Dennis_ukagaka
  • 2017年08月06日 21:12
  • 2167

基于Docker及Kubernetes技术构建容器云(PaaS)平台概述

本文个人博客地址为:http://www.huweihuang.com/article/kubernetes/paas-based-on-docker&amp;kubernetes/本文个人博...
  • huwh_
  • huwh_
  • 2017年07月23日 17:39
  • 4542
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 438
    排名: 11万+
    最新评论