要准备的环境
- docker
- maven
- jdk
- svn
- docker官方的tomcat镜像
有关环境的安装和配置可参考
centos下安装svn可以用yum快捷安装yum install svn
要实现一键部署其实就是要写一个脚本帮助我们完成部署任务。下面我们用一个脚本完成项目自动部署至Docker,由于步骤比较多,我们将步骤分解出来执行以便有更清晰的认识。
- 从SVN拉取或更新项目
- 使用MAVEN编译打包
- 将可执行的web应用移至发布的目录
- 使用Docker运行tomcat镜像,将步骤3的web应用目录挂载至Docker容器
步骤如上所示,下面开始动手。
从SVN中checkout项目
- 1
- 2
- 1
- 2
如果项目已经checkout出来,使用svn update更新项目
使用MAVEN编译打包项目
- 1
- 1
将可执行的web应用移至发布的目录
- 1
- 2
- 1
- 2
使用docker运行tomcat镜像
- 1
- 1
将 /app/deploy/basic-web 的资源挂载至容器的 /usr/local/tomcat/webapps/basic-web 目录
把上述步骤编写成一个脚本执行
步骤分析完毕,现在要做的事就是把上述的步骤放在一个脚本里执行,达到我们一建部署的目的。
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
脚本的内容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
编写脚本完成后,我们可以就可以愉快的使用部署命令了
- 1
- 1
若要指定容器的映射端口可以加上 -p 参数
- 1
- 1
至此,我们已经实现了一个命令实现应用的部署,而且容器不用关心环境变量,不得不感慨docker对于DevOps带来的便利。这个脚本执行的任务和Jenkins有点类似,但脚本可以控制的粒度更细,可扩展性更高。
若有其它需要,可以扩展脚本以实现更多功能,
比如svn的版本回滚至3000再运行: docker-deploy -b 3000 -p 8081
比如svn的版本不更新直接运行: docker-deploy -U -p 8081 (可设置成-U 不更新svn,-u更新svn)