Windowsで開発したTomcatのアプリをwarファイルにして、ubunts12.04を入れたVMからdotcloudにデプロイする。


Tomcatでサーブレットを触ってみたら、dotcloudにTomcatで作ったwebアプリをデプロイしてみたくなって、簡単に出来るだろうと思ってたら意外と苦労しました。

目次

  • アプリケーションの作成
  • アプリケーションをwarファイルにする
  • VMにwarファイルアップロード
  • dotcloudにアプリケーション仮作成
  • アプリケーションをdotcloudに送信



ディレクトリ作成

まず、ホームディレクトリに「dotcloud/tomcat/first」ってディレクトリを作成します(自分の好きなディレクトリでよいです)
コマンド例
mkdir -p ~/dotcloud/tomcat/first
cd ~/dotcloud/tomcat/first

dotcloudのアプリ作成

「dotcloud create ~」で、dotcloud側にアプリを作成します。
既に作成しているアプリとディレクトリを紐付ける場合は、「dotcloud connect ~」になるのではないかと思います。
コマンド例
dotcloud create first
==> Creating a sandbox application named "first"
==> Application "first" created.
Connect the current directory to "first"? [Y/n]: y
==> Connecting with the application "first"
==> Connected with default push options: --rsync
途中の選択肢はyでいいと思います。
英語の文章をなんとなくみた感じだと、ここのディレクトリと「first」アプリを紐付けちゃうよ?って意味だと思いました。

dotcloud.yml作成

「~/dotcloud/tomcat/first/dotcloud.yml」を作成します。
コマンド
nano dotcloud.yml

内容
www:
  type: java
 
「dotcloud.yml」の内容はこれだけでやりました、
「approot:~」をつけたら上手く出来なかったのですorz

warファイルアップロード

FFFTPで、VMの「~/dotcloud/tomcat/first/」にJava/Tomcat/サーブレットを作ってみるで作ったアプリのwarファイルをアップロードします。
アップロードしたwarファイルの名前を「ROOT.war」に変更します。「ROOT.war」以外だと上手く行きませんでした…不思議orz
※dotcloudにwarファイルをデプロイすると、通常「http://first-chapati.dotcloud.com/warファイルの名前/」がアプリのルートディレクトリになるのですが、ファイル名を「ROOT.war」にすると、「warファイルの名前」の部分が不要になる便利な裏ワザみたいです。

warファイルのデプロイ

「dotcloud push」で、warファイルをdotcloudのアプリに向かってプッシュします。
アプリを修正したら、またここのディレクトリに置いてプッシュすればいいみたいです。
$ dotcloud push
==> Pushing code with rsync from "./" to application first
building file list ... done
./
ROOT.war
dotcloud.yml
.dotcloud/
.dotcloud/config
 
省略
 
==> Application is live at http://first-chapati.dotcloud.com
 

最後に表示されたURLにアクセスすると、ちゃんとJava/Tomcat/サーブレットを作ってみるで作った画面が表示されました。
Tomcatで作成したwebアプリは、Tomcat以外のサーブレットコンテナ(JBoss、Geronimo、Websphere、Jettyなど)でも基本的に動く物らしいです。
dotcloudには、サーブレットコンテナとして「Jetty」が入っているからwarファイルをデプロイ出来るみたいでした。


コメント

名前: