如何使用Rancher部署发布自己的web应用
作为使用Rancher的小白,昨天折腾了一天,终于搞定将自己的应用,使用Rancher部署并发布,今天就把过程记录下来,作为后来参考,也给个位小伙伴节省点儿时间这里涉及到docker的一些使用(打包,发布,导入导出,运行等等),应用以小幺鸡(http://www.xiaoyaoji.cn/),简单好用的在线接口文档管理工具介绍,这是一个开源的工具,当然你也可用用你自己的应用发布;准备应用...
作为使用Rancher的小白,昨天折腾了一天,终于搞定将自己的应用,使用Rancher部署并发布,今天就把过程记录下来,作为后来参考,也给个位小伙伴节省点儿时间
这里涉及到docker的一些使用(打包,发布,导入导出,运行等等),应用以小幺鸡(http://www.xiaoyaoji.cn/),简单好用的在线接口文档管理工具介绍,这是一个开源的工具,当然你也可用用你自己的应用发布;
准备应用
- 需要有Docker环境
- 需要有Rancher环境
- 需要有你自己的应用,我这里是使用小幺鸡(http://www.xiaoyaoji.cn/)
- 1和2有不会的参考我以前博客自己搭建
我这里1和2已经准备好了,现在根据小幺鸡官网,点击下载源码,找到离线部署配置说明,需要满足如下条件:
- 下载最新离线文件
- 下载apache tomcat 版本需要7.x以上
- 解压tomcat
- 解压小幺鸡到tomcat/webapps/ROOT目录下
- 如果使用一键安装集成tomcat版本可直接看这儿
- 启动mysql。创建数据库xiaoyaoji, 并执行数据库脚本。这是脚本地址 https://github.com/zhoujingjie/xiaoyaoji/tree/dev/doc
- 修改tomcat/webapps/ROOT/WEB-INF/classes/config.properties
- 启动tomcat,访问http://localhost:8080/
切入正题
上面小幺鸡的官网上已经说了,如何部署运行,这里是要将自己的应用打包成docker镜像,然后使用Rancher取管理和部署;
根据$准备应用里的介绍,可以看到一个应用发布,需有两部分:应用本身以及数据服务(mysql);
使用Rancher部署数据服务
这里就是MySQL的数据服务了,当然你也可以自己打包mysql的镜像,网上有很多,大概是先pull一个系统镜像,比如Centos:7.4,然后在系统里面安上mysql。。。。,我第一次也是这么做的,可惜,Docker我还玩不转,我打出来的镜像根本无法用。因此这里借助强大的Rancher就好了,配置几步就OK啦,步骤如下:
-
选择应用,从应用商店添加应用
-
搜索MySQL
-
查看详情
这里需要注意下,mysql服务的一些配置信息,必填项上图已经框出,其他信息可以保持默认,上图中给出:
- 应用名称: mysql
- 端口:3306
- 密码:需要你指定root用户的密码
- MySQL的docker镜像:这里就需要注意了,默认是:mysql:latest,但是最新的mysql我们一般是用不着的,目前(到2018-12-12日为止),最新的mysql是9.0+了,这个版本的安全验证变化比较大,跟5.0+版本的不一样,如果用最新的版本,很可能部署好后,假设你的客户端版本配合不上,那么你就没法用这个服务了,所以我这里选择了镜像myslq:5.7
- MySQL数据库:因为我要部署小幺鸡,所以我这里直接就指定了一个数据库,xiaoyaoji,这个不是必填项,可以创建好服务好,直接创建数据库
- 最后,需要选择
创建后启动服务
,然后点击启动按钮,Rancher就会为我们创建好相关应用
可见上面,创建的mysql服务,同时为我们提供好了负载均衡服务,省去了我们自己一顿瞎折腾,最后还达不到Rancher的效果(Smile…)
- 连接数据库并导入数据
现在赶紧用客户端工具试试
然后把小幺鸡的数据库内容导入进去。
构建自己的应用的镜像
一开始我是参考如何使用Docker部署一个web项目并打包成镜像文件1,先pull的Centos的镜像,然后下载自己的jdk和tomcat,并上传到容器里面去,根据步骤一步一步来,也确实成功了,一直到第5步,后面步骤我就没法进行下去了,主要是我这里外网不了,无法注册dockerhub账户,其实我这里有私有的docker仓库,可以参考我以前博客,可以搭建一个私有的docker仓库,但是也有问题;在docker login
的时候,会提示404错误在访问/v2的时候不成功,所以也就不了了之了。
参考上面提到的博客,根据操作将应用打包成镜像后,就可以上传到仓库中,然后在随时随地拉取到本地使用,然而,结局并不尽人意,拉取后总是无法启动这个容器,然后又是一番搜索,发现可能跟我使用tomcat的方式有关,可以参考这里:docker纪录篇1-docker构建tomcat镜像,这位仁兄描述的就更加详尽了,从docker介绍,安装,命令使用,以及镜像构建整套流程都做了说明,其中在构建镜像部分就提到过:
docker要求容器中 运行的程序必须是前端运行的(也就是运行后 不能再输入命令) 默认的tomcat8 是使用deamon方式运行(运行完成后 后台运行可以继续输入命令行 ),然后他也提到了解决方法,就是修改catalina.sh文件中有>> "$CATALINA_OUT" 2>&1
中去掉&符号。不过他那里是用的tomcat6,我这里用到的是tomcat8,我看了一下8的内容跟6不一样了,是>> "$CATALINA_OUT" 2>&1 "&"
,到底tomcat8.0是不是这样改,我就不知道了,后面我就没实验了。不过他提到的问题关键就是docker要求容器中 运行的程序必须是==前端运行==的
是很有意义的。
上面说的可能比较啰嗦,但是我昨天一天的折腾就是这样的。。。
准备开源镜像
实际上既然Rancher上MySQL的现成服务都有了,为什么tomcat的没有呢?在应用商店上搜索tomcat,发现确实没有,不过没关系,从docker仓库中搜索一下
[root@namenode2 package]# docker search tomcat:8.0
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 2215 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 59 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 50 [OK]
webgoat/webgoat-8.0 Latest development version of WebGoat, see h… 41
davidcaste/alpine-tomcat Apache Tomcat 7/8 using Oracle Java 7/8 with… 31 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 27 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 14 [OK]
[root@namenode2 package]#
很显然,tomcat是提供镜像的,那么把这个镜像pull下来即可
[root@namenode2 package]# docker pull tomcat:8.0
[root@namenode2 package]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoyaoji 2.1.7 485178ba848b 17 hours ago 474MB
centos latest 1e1148e4cc2c 6 days ago 202MB
mariadb latest b468922dbbd7 3 weeks ago 366MB
mysql latest f991c20cb508 3 weeks ago 486MB
rancher/server latest a0b9e05b2a03 2 months ago 1.08GB
tomcat 8.0 ef6a7c98d192 3 months ago 356MB
这里pull 8.0版本的。
另外,查找容器,可以用search命令,但是最好,我还是推荐,去dockerhub的官方去查找,因为你能得到更多更详细的信息,比如搜索 tomcat,
点击DETAILS
按钮,你会得到非常有用的信息:
详情中提供了这个镜像是如何使用,以及相关环境变量的配置等等以及其他的信息。这些信息非常重要。
好了,现在启动tomcat:8.0的镜像
[root@namenode2 package]# docker run -p 8889:8080 --name tomcat8 -d tomcat:8.0
[root@namenode2 package]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0130e08a30b7 tomcat:8.0 "catalina.sh run" 17 hours ago Up 2 hours 0.0.0.0:8889->8080/tcp tomcat8
访问: http://yourhostip:88889/ 就可以看到tomcat的管理界面了
接下来就是,把小幺鸡的应用放到tomcat的目录下,根据提示,是将xiaoyao-2.1.7.zip这个安装文件解压,放到tomcat安装目录下webapps/ROOT/目录下。
首先将zip解压,需要在自己本地解压,因为tomcat容器中不支持unzip命令,然后再将其打包成tar文件;
再打包之前,需要根据小幺鸡安装提示修改数据库配置文件,将其设置成上面刚刚安装好的mysql服务的访问地址。
最终打包成 xiaoyaoji.gz.tar的压缩包。
将这个压缩包上传到容器里面,命令
docker cp xiaoyaoji.gz.tar 0130e08a30b7:/usr/local/tomcat/webapps/ROOT
# 上面命令是将本地本目录下的文件xiaoyaoji.gz.tar
# 上传到容器:0130e08a30b7(也就是tomcat:8.0)的目录/usr/local/tomcat/webapps/ROOT
上传后,就需要登录到这个容器里面去解压
[root@namenode2 package]# docker exec -it 0130e08a30b7 bash
root@0130e08a30b7:/usr/local/tomcat# cd webapps/ROOT/
root@0130e08a30b7:/usr/local/tomcat/webapps/ROOT# ls
META-INF WEB-INF asf-logo-wide.svg bg-button.png
bg-nav-item.png bg-upper.png index.html robots.txt
tomcat-power.gif tomcat.gif tomcat.svg
RELEASE-NOTES.txt __MACOSX assets
bg-middle.png bg-nav.png favicon.ico index.jsp test
tomcat.css tomcat.png xiaoyaoji.gz.tar # 这个文件是刚刚上传的
root@0130e08a30b7:/usr/local/tomcat/webapps/ROOT# tar -zvxf xiaoyaoji.gz.tar
解压完成后,登录:http://yourhostip:8889/ 就会发现你的应用了
打包自己的镜像
上面是通过拉取tomcat的官方镜像,然后部署自己的应用上去,到这里已经可以提供服务了,但是这 并不是我要追求的最终结果,我所要的是用Rancher来集中管理我们的应用。
因此,还需要将这个容器打包成我自己的镜像。
原本打包镜像需要是参考如何使用Docker部署一个web项目并打包成镜像文件中的6,7,8步骤就行,但是我这里login不了,所以,只能再自己本地玩玩docker了,博文docker export import介绍的不错.
- 导出容器
这里我们将tomcat:8.0的容器:0130e08a30b7
docker export 0130e08a30b7 > xiaoyaoji.tar
上面命令会将容器0130e08a30b7 导出到当前目录下,导出名为xiaoyaoji.tar
docker export 命令会把容器的文件系统以tar包的格式导出到标准输出。将容器保存到本地后,我们就可以通过网络等方式将tar包分享给他人。
我的Rancher有主机4台,那么我就需要将xiaoyaoji.tar分别发送到4台主机上去
2. 导入容器为镜像
cat xiaoyaoji.tar | docker import - xiaoyaoji:2.1.7
上面命令是将导出的tar,转成镜像,镜像名为xiaoyaoji 标签是其版本2.1.7(当前小幺鸡的版本是2.1.7)
3. 查看镜像
docker images
[root@namenode2 package]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoyaoji 2.1.7 485178ba848b 18 hours ago 474MB
centos latest 1e1148e4cc2c 6 days ago 202MB
mariadb latest b468922dbbd7 3 weeks ago 366MB
mysql latest f991c20cb508 3 weeks ago 486MB
rancher/server latest a0b9e05b2a03 2 months ago 1.08GB
tomcat 8.0 ef6a7c98d192 3 months ago 356MB
上面第一条就是我们刚刚导入的xiaoyaoji的镜像了,然后将Rancher的4台主机,分别如上操作。使其每个主机都包涵xiaoyaoji:2.1.7的镜像。
到这里,镜像我们就有了。
使用Rancher发布自己的应用
- 添加应用
名称:tomcat 描述:我的小幺鸡应用服务器
后面的选项全部默认即可,点击创建按钮完成
-
添加服务
应用添加完成后,界面会有显示
-
配置xiaoyaoji服务相关内容
如下填写上基础信息以及端口映射信息
这里注意:如图中,创建前总是拉取镜像,被我注销了,因为我的xiaoyaoji的镜像没有发布出去,只是在我本地中有xiaoyaoji:2.1.7的镜像,所以创建时候不应该再拉取镜像的。假设你的应用已经成功发布了,不论是在dockerhub上,还是你自己的私有docker仓库中,你需要勾选此项。
还有一些更重要的配置选项:
确保这些参数配置正确,否则服务总是会启动失败,这些参数那里来的?博文前面提到过,在dockerhub中搜索tomcat镜像的时候,其详细说明中有相关环境变量的描述。
同时,遇到启动失败,需要经常查看日志信息,rancher有日志,docker也有日志。
docker查看日志的命令
docker logs 容器id
根据日志提示能帮助你解决大部分问题。
好了,现在可以点击创建按钮了,过一会服务启动成功。
现在就可以访问:http://yourrancherhostip:8089/
如此你的应用就在Rancher中发布完成了。
最后
这篇博文的完成,离不开广大博主的支持,现把所有参考博文列出:
- Rancher系统配置添加镜像仓库
- 如何使用Docker部署一个web项目并打包成镜像文件
- Docker教程:Docker镜像导出及迁移
- docker export import
- Rancher中使用Docker原生命令行
- docker中tomcat镜像的使用
- Docker Tomcat部署war包
这篇博客主要参考docker的常用命令,感觉很全乎了 ↩︎
更多推荐
所有评论(0)