如何使用Rancher部署发布自己的web应用

12 篇文章 0 订阅
8 篇文章 0 订阅

作为使用Rancher的小白,昨天折腾了一天,终于搞定将自己的应用,使用Rancher部署并发布,今天就把过程记录下来,作为后来参考,也给个位小伙伴节省点儿时间
这里涉及到docker的一些使用(打包,发布,导入导出,运行等等),应用以小幺鸡(http://www.xiaoyaoji.cn/),简单好用的在线接口文档管理工具介绍,这是一个开源的工具,当然你也可用用你自己的应用发布;

准备应用

  1. 需要有Docker环境
  2. 需要有Rancher环境
  3. 需要有你自己的应用,我这里是使用小幺鸡(http://www.xiaoyaoji.cn/)
  4. 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啦,步骤如下:

  1. 选择应用,从应用商店添加应用
    应用商店添加应用

  2. 搜索MySQL
    搜索MySQL

  3. 查看详情
    查看详情
    这里需要注意下,mysql服务的一些配置信息,必填项上图已经框出,其他信息可以保持默认,上图中给出:

  • 应用名称: mysql
  • 端口:3306
  • 密码:需要你指定root用户的密码
  • MySQL的docker镜像:这里就需要注意了,默认是:mysql:latest,但是最新的mysql我们一般是用不着的,目前(到2018-12-12日为止),最新的mysql是9.0+了,这个版本的安全验证变化比较大,跟5.0+版本的不一样,如果用最新的版本,很可能部署好后,假设你的客户端版本配合不上,那么你就没法用这个服务了,所以我这里选择了镜像myslq:5.7
  • MySQL数据库:因为我要部署小幺鸡,所以我这里直接就指定了一个数据库,xiaoyaoji,这个不是必填项,可以创建好服务好,直接创建数据库
  • 最后,需要选择创建后启动服务,然后点击启动按钮,Rancher就会为我们创建好相关应用
    创建好的Mysql服务
    可见上面,创建的mysql服务,同时为我们提供好了负载均衡服务,省去了我们自己一顿瞎折腾,最后还达不到Rancher的效果(Smile…)
  1. 连接数据库并导入数据
    现在赶紧用客户端工具试试
    用客户端工具试试
    然后把小幺鸡的数据库内容导入进去。

构建自己的应用的镜像

一开始我是参考如何使用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,
搜索 tomcat
点击DETAILS按钮,你会得到非常有用的信息:
tomcat镜像的详细信息
详情中提供了这个镜像是如何使用,以及相关环境变量的配置等等以及其他的信息。这些信息非常重要。

好了,现在启动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介绍的不错.

  1. 导出容器
    这里我们将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发布自己的应用

  1. 添加应用
    添加应用

名称:tomcat 描述:我的小幺鸡应用服务器
后面的选项全部默认即可,点击创建按钮完成

  1. 添加服务
    应用添加完成后,界面会有显示
    添加服务

  2. 配置xiaoyaoji服务相关内容
    配置xiaoyaoji服务相关内容
    如下填写上基础信息以及端口映射信息
    这里注意:如图中,创建前总是拉取镜像,被我注销了,因为我的xiaoyaoji的镜像没有发布出去,只是在我本地中有xiaoyaoji:2.1.7的镜像,所以创建时候不应该再拉取镜像的。假设你的应用已经成功发布了,不论是在dockerhub上,还是你自己的私有docker仓库中,你需要勾选此项。

还有一些更重要的配置选项:
更重要的配置选项

确保这些参数配置正确,否则服务总是会启动失败,这些参数那里来的?博文前面提到过,在dockerhub中搜索tomcat镜像的时候,其详细说明中有相关环境变量的描述。

同时,遇到启动失败,需要经常查看日志信息,rancher有日志,docker也有日志。
docker查看日志的命令

docker logs 容器id

根据日志提示能帮助你解决大部分问题。

好了,现在可以点击创建按钮了,过一会服务启动成功。
创建服务成功
现在就可以访问:http://yourrancherhostip:8089/
success

如此你的应用就在Rancher中发布完成了。

最后

这篇博文的完成,离不开广大博主的支持,现把所有参考博文列出:



  1. 这篇博客主要参考docker的常用命令,感觉很全乎了 ↩︎

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
您好!关于 Rancher 部署的问题,我可以为您提供一些基本的信息。 Rancher 是一个开源的容器管理平台,它可以帮助您在生产环境中轻松部署和管理容器化应用。下面是一些基本的步骤来部署 Rancher: 1. 确保您已经准备好了一个满足 Rancher 最低系统要求的服务器或云平台实例。您可以查看 Rancher 官方文档获取详细的系统要求信息。 2. 安装 Docker:Rancher 使用 Docker 来运行自身和管理容器。您需要先安装 Docker 并确保它能够正常运行。 3. 启动 Rancher 容器:使用 Docker 命令在服务器上启动 Rancher 容器。您可以使用以下命令: ``` $ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher ``` 这会在后台运行 Rancher 容器,并将 HTTP 端口 80 和 HTTPS 端口 443 映射到服务器上。请确保这些端口未被其他服务占用。 4. 访问 Rancher:一旦容器启动完成,您可以通过浏览器访问 Rancher Web 界面。在浏览器中输入服务器的 IP 地址或域名,并使用默认的管理员凭据(用户名:admin,密码:admin)登录 Rancher。 5. 配置 Rancher:登录 Rancher 后,您可以根据需要进行进一步的配置,例如设置访问控制、添加主机、创建命名空间等。Rancher 提供了直观的界面和丰富的功能,让您能够轻松管理容器化应用。 这只是一个大致的部署过程,具体的步骤可能会因您的环境和需求而有所不同。建议您参考 Rancher 官方文档获取详细的部署指南和最佳实践。 希望这些信息对您有所帮助!如果您有任何其他问题,请随时提问。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

junehappylove

急急如律令,buibui~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值