Skip to content

Instantly share code, notes, and snippets.

@sudoyu
Last active December 15, 2015 06:59
Show Gist options
  • Save sudoyu/5220187 to your computer and use it in GitHub Desktop.
Save sudoyu/5220187 to your computer and use it in GitHub Desktop.

■Grailsアプリ

$ grails create-app morika
$ cd morika/

BuildConfig.groovy で Cloud Foundry プラグインを追加

repositories と plugins に1行ずつ追加する

repositories {
  mavenRepo "http://maven.springframework.org/milestone/"
}
plugins {
  compile ":cloud-foundry:1.2.3"
}

grails-app/domain/org/example/Music.groovy

$ grails create-domain-class org.example.Music

中身はこれ

package org.example

class Music {
    String title
    Integer bpm
    byte[] jacket
    static constraints = {
      title( blank: false )
      jacket( type:'materialized_blob',maxSize:10240000 )
    }
}

grails-app/controllers/org/example/MusicController.groovy

$ grails generate-all org.example.Music

コントローラにimageアクションを追加する

    def image(Long id) {
        def music = Music.get( id )
        if( music ){
            response.outputStream << music.jacket
        }else{
            response.sendError(404)
        }
    }

grails-app/views/music/list.gsp

music/list.gsp の41行目付近

<td>${fieldValue(bean: musicInstance, field: "jacket")}</td>

を↓に変更する

<td><g:if test="${musicInstance.jacket}">
<img src="<g:createLink controller='music' action='image' id='${musicInstance.id}' />" />
</g:if></td>

■Cloud Foundryの接続情報の設定

$HOME/.grails/settings.groovy

grails.plugin.cloudfoundry.username="morika-t@hogehoge.com"
grails.plugin.cloudfoundry.password="hogefuga"
grails.plugin.cloudfoundry.username="http://api.cloudfoundry.com/"

Config.groovy

こちらでも設定可能

grails.plugin.cloudfoundry.username="demo@example.com"
grails.plugin.cloudfoundry.password="demopassword"
grails.plugin.cloudfoundry.appname="grailsmusicdemo"

DataSource.groovy

変更不要。CloudFoundryが対応したデータソース

  • PostgreSQL
  • MySQL
  • MongoDB
  • RabbitMQ
  • Redis

は自動的に検出・対応してくれる

■grails cf-* コマンドでのデプロイほか

$ grails prod cf-push
Application Deployed URL: 'mygrailsapp.cloudfoundry.com'? y
Would you like to create and bind a mysql service?[y,n] n
Would you like to create and bind a postgresql service?[y,n] y
Application 'mygrailsapp' started at http://mygrailsapp.cloudfoundry.com/

再デプロイは

$ grails prod cf-update

インスタンス数の表示・変更

$ grails cf-show-instances
$ grails cf-update-instances 2

メモリ割り当ての表示・変更

$ grails cf-stats
$ grails cf-update-memory 1G

ログの確認

$ grails cf-logs

アプリケーションの起動/停止/再起動

$ grails prod cf-stop
$ grails prod cf-start
$ grails prod cf-restart

リモートのファイル確認

$ grails cf-list-files /
$ grails cf-get-file logs/stderr.log

アプリケーションの削除・全削除

$ grails cf-delete-app
$ grails cf-delete-all-apps

参考資料

http://docs.cloudfoundry.com/frameworks/java/spring/grails.html
http://blog.springsource.com/2011/04/12/one-step-deployment-with-grails-and-cloud-foundry/
http://docs.cloudfoundry.com/tools/deploying-apps.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment