使用DaoCloud持续构建docker镜像,自动化部署
我们学会了在主机上安装部署docker,也学会了构建自己的docker镜像和容器,启停也都会用了,下一步就需要持续构建发布docker的技能了。
我们希望能在代码提交后,有个远程服务能自动开始构建项目、拉取相应的镜像,执行对应的Dockerfile命令,最终给我们生成一个可以直接启动的contrainer容器,之后我们就可以将该容器发布到任何主机了。
现在有一些第三方的docker管理平台能提供上面的功能,如DaoCloud、网易蜂巢、阿里云docker平台等。这里我们以DaoCloud为例来看看怎么完成持续化构建。
1 创建DaoCloud项目
首先,注册个DaoCloud账号,进入控制台。
在这里创建一个项目,指定个名字,设置代码源。
可以看到,它给了几个选项,譬如GitHub,gitlab,git地址等。选择自己代码托管的地方,复制项目的git地址。
需要注意的是,GitHub和自己搭的git地址或者其他平台的git地址,在最终的持续构建时功能有所不同,GitHub的能够做到一提交代码就自己开始构建,而git地址只能手工点一下构建。见官方文档说明:http://guide.daocloud.io/dcs/git-9870399.html
我这里使用的是oschina的git地址,代码托管到git.oschina.net,输入项目的git地址后,点开始创建即可。
2 设置流程
可以看到右上角有个push触发或手动触发,由于我们使用的是git地址,所以只能手动触发。
流程定义系统默认给了3个阶段,测试、构建和发布,可以分别点开看看是什么。
这里有个基础镜像,环境变量还有左上角的触发条件等的配置。如果你需要进行一些构建前的测试,就可以添加安装命令、预备动作什么的,也可以替换基础镜像。
由于我只是用它来构建镜像,所有直接把测试任务给删掉了,只保留个构建任务
构建路径为“/”,代表是项目根目录,Dockerfile可以使用本地和云端,我使用本地,在项目的根目录添加一个Dockerfile文件
这是一个初始化的Springboot项目,我在application里添加了Controller标签,输出了一句“hello docker”,仅此。
FROM hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8
ADD pom.xml /tmp/build/
ADD src /tmp/build/src
#构建应用
RUN cd /tmp/build && mvn clean package \
#拷贝编译结果到指定目录
&& mv target/*.jar /app.jar \
#清理编译痕迹
&& cd / && rm -rf /tmp/build
VOLUME /tmp
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
上面的Dockerfile文件,Springboot项目依赖的基础镜像很简单,只需要maven和jdk即可,当然如果你里面用了数据库、redis什么的,只有maven和jdk就不行了。当然,最好是选择云数据库,避免在docker里安装数据库、redis之类的。这样你的镜像就比较小,也不与容器内的数据绑定了,更便于集群使用。
为毛我的from镜像是那么长一串,而不是maven3-jdk-8的基础镜像呢,这可是我精心找的最快的适合Springboot基础镜像了。
众所周知,很多原始镜像下载速度很慢,而maven的依赖下载更是慢上加慢,平时开发中我们都习惯于使用阿里的maven仓库。这个基础镜像就是集成的阿里的maven库,而是地址在国内,下载飞快。
在项目根路径编辑好dockerfile后,把项目提交到git上即可。
然后就可以点击手动触发了
填写项目的分支或标签,譬如我的项目分支master,输入master确定即可。就可以看到构建过程开始了。
构建时,你可以点击该流程,就能看到日志,里面进行Dockerfile各种你设定好的流程。
3 得到镜像
使用DaoCloud持续构建docker镜像,自动化部署的更多相关文章
- 基于Jenkins,docker实现自动化部署(持续交互)
前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...
- 基于Jenkins,docker实现自动化部署(持续交互)【转】
前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...
- springboot docker jenkins 自动化部署并上传镜像
springboot + docker + jenkins自动化部署项目,jenkins.mysql.redis都是docker运行的,并且没有使用虚拟机,就在阿里云服务器(centos7)运行 1. ...
- Jenkins+Docker+Git 自动化部署
Jenkins+Docker+Git 自动化部署图文教程 https://blog.csdn.net/qq_38252039/article/details/89791247 前言: 通过几天的学习和 ...
- 多阶段构建Docker镜像
在Docker 17.05及更高的版本中支持支持一种全新的构建镜像模式:多阶段构建: 多阶段构建Docker镜像的最大好处是使构建出来的镜像变得更小: 目前常见的两个构建镜像的方式为: 1.直接使用某 ...
- 使用Jenkins pipeline流水线构建docker镜像和发布
新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...
- Docker:使用Jenkins构建Docker镜像
Docker 彭东稳 1年前 (2016-12-27) 10709次浏览 已收录 0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少了解一些.前段时间研究OpenShift(paas的一种),发现了另外一种构建Docker镜像的方式:S2I ...
- Maven插件构建Docker镜像
背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上.单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网 ...
随机推荐
- 转载:vsftp中的local_umask和anon_umask
转载出处:http://blog.sina.com.cn/s/blog_67c5699001010e3e.html umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限u ...
- 20145216史婧瑶《Java程序设计》第四次实验报告
实验四 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输出学号 实验步骤 1.搭建Android环境 2.安装Android,核心是配置JDK.SDK 3. ...
- PHP设计模式(六): 单例模式
- 连续取模-function
2017-09-22 21:56:08 The shorter, the simpler. With this problem, you should be convinced of this tru ...
- codeforces 848c - two TVs
2017-08-22 15:42:44 writer:pprp 参考:http://blog.csdn.net/qq_37497322/article/details/77463376#comment ...
- Asp.Net MVC 请求原理分析
分析Asp.Net MVC的请求过程,我们从以下几方面看: 配置:IIS网站的配置可以分为两个块:全局 Web.Config 和本站 Web.Config . Asp.Net Routing属于全局性 ...
- zlib编译方法
点击这里下载zlib1.2.8源码 http://www.zlib.net/fossils/ ##编译方法一## - 解压源码文件到指定目录,例如 x:\zlib - 打开VS2015的Develop ...
- c语言的tcp和udp客户端和服务器
都是最简单的用来记忆. this is my 的git地址:https://github.com/yanjinyun/cLanguageTcpUdp tcp最简单的服务器: int main(int ...
- 【转】Ubuntu 14.04 引导修复(Boot Repair)(双系统修复一)
这几天不是我闲着没事做,实在是电脑故意跟我过不去,一不小心,Windows就再也无法打 开了,然后的然后,你们都知道就是重装系统喽.但是重装系统后,会发现原来的Ubuntu引导不见了,开机直接进入Wi ...
- Ubuntu 无法获得锁
使用ubuntu安装pip 时,出现以下错误: E: 无法获得锁 /var/cache/apt/archives/lock – open (11 资源临时不可用) E: 无法锁定下载目录 解决方法: ...