在上一篇博客《Heroku:快速部署Dropwizard开发的RESTful Service》中,我们使用了Heroku这个PaaS进行快速部署。如果因为某些原因,你觉得把你的Service部署到Heroku这样的public PaaS不太靠谱,或者政策上不允许,你也完全可以动手自己做一个类似Heroku这样功能的PaaS平台。而且,很幸运,开源工具dokku,能够帮助你很快的搞定这些东西。
当你搭建好dokku Server以后,其使用就几乎和Heroku一样,当你使用git push的时候,dokku会使用buildpack检测你的应用,然后再部署,因为这样,dokku可以支持部署各种不同类型的app,java、ruby、nodejs都不在话下。在部署时,dokku和Heroku也是类似的使用LXC(LinuX Contianer)来运行你的Server,这样的方式使得起启动更快更轻。dokku使用了由dotcloud的著名开源LXC管理工具docker来运行你的应用。docker是一个好东西,如果我还不是太懒的话,以后会有博客来演示docker的使用。
这里搭建dokku server,使用的是Vagrant,没有用AWS演示。(其实是因为信用卡还没办下来,办下来了,我就把博客更新一下,用AWS进行部署)。
1.搭建dokku server
1)安装VirtualBox和Vagrant,此处省略200字。
2)创建一个文件夹:dokku-dropwizard-demo
3)初始化vagrant:$ vagrant init
修改Vagrantfile中的网络设置
config.vm.network :private_network, ip: "192.168.33.10"
这个原来是被注释掉的,取消注释就可以了。这样,你的主机就可以访问你用虚拟机启动的Dokku Server了。
4)安装虚拟机:$ vagrant up
5)进入虚拟机:$ vagrant ssh
6)安装dokku: $ wget -qO - https://raw.github.com/progrium/dokku/v0.2.0/bootstrap.sh | sudo DOKKU_TAG=v0.2.0 bash
5)配置ssh:$ cat ~/.ssh/id_rsa.pub | ssh [email protected] "sudo sshcommand acl-add dokku progrium"
vagrant默认的用户名和密码都是vagrant。所以,当提示你输入密码的时候,输入vagrant就行了。
2.部署Service到dokku server
我们使用《Heroku:快速部署Dropwizard开发的RESTful Service》中开发的Service进行部署
指定buildpack文件。在项目中加入.env文件:
export BUILDPACK_URL=https://github.com/kiwiwin/heroku-buildpack-gradle
使用git push部署到运行在Vagrant虚拟机中的dokku server:
$ git remote add dokku git [email protected]:dropwizard-demo
$ git push dokku master
这个阶段因为我们的buildpack是指定的gradle-1.9,需要下载,特别是当你在网速不给力的时候,第一次比较耗时,请保持耐心,稍安勿躁。
七七四十九天以后,看到类似下图以后,我们的应用就可以访问啦。
3.访问Service
$ curl http://192.168.33.10/hello?name=rocojie
返回
{"id":2,"content":"Hello, rococojie!"}
有了这么好的工具,不玩玩儿不就可惜了吗?