在上一篇博客《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!"}
有了這麼好的工具,不玩玩兒不就可惜了嗎?