CloudBees上でGrailsにてDBにアクセス

2019-05-12Grails,Groovy

CloudBees にGrailsアプリをアップできたので、DBにアクセスしてみた。

設定

以下にアクセスして、Databaseの新規追加を行う。

https://grandcentral.cloudbees.com/

CloudBees上での各種設定方法は、僕自身も四苦八苦しているうちに登録方法をみにつけたので省略する。
デフォルトではMySQLデータベースとして登録される。

Grailsアプリ上の設定

以下のサイトの Configuring CloudBees DataSources の内容を利用した。 CloudBees RUN@cloud Documentation

そのままコピペした。コピペした上で、以下の3文字列を置換した。

  • BEES_DB
  • BEES_DB_USER
  • BEES_DB_PASS

設定後は以下のコマンドを実行し、warファイルをデプロイする。

# ${app_name}は適切に書き換えること
$ grails prod war
$ grails bees-app-deploy ${app_name}

結果を確認してみる

ざんねんながら自分のアプリケーションにアクセスしてみても 404エラー となっている。

http://${app_name}.${account_name}.cloudbees.net/

exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.cloudbees.jdbc.Driver' for connect URL '[[jdbc:cloudbees://${app_name_db}]]'
at org....
...
...

com.cloudbees.jdbc.Driverを生成できませんでした、と。

解決方法

2つある。

解決方法その1

CloudBeesの提供していると思われるJDBC機能を利用しない方法。DataSource.groovyを書き換える。

DataSource.groovy

dataSource {
    pooled = true
    // driverClassName = "com.cloudbees.jdbc.Driver"
    driverClassName = "com.mysql.jdbc.Driver"
}
environments {
    // ...
    production {
        dataSource {
            dbCreate = "update"
            // url = "[[jdbc:cloudbees://${app_name_db}]]"
            url = "jdbc:mysql://ec2-75-xxx-xxx-xxx.compute-1.amazonaws.com/${app_name_db}"  // 適宜書き換える必要がある箇所
            // mysqlサーバー名も僕の環境のものを一部掲載しておく。
            username = "${db_user}"      // 適宜書き換える必要がある箇所
            password = "${db_password}"  // 適宜書き換える必要がある箇所
        }
    }
}

解決方法その2

url属性情報 を一部直さないといけないぽい。

DataSource.groovy

dataSource {
    pooled = true
    driverClassName = "com.cloudbees.jdbc.Driver"
}
environments {
    // ...
    production {
        dataSource {
            dbCreate = "update"
            // url = "[[jdbc:cloudbees://${app_name_db}]]"
            url = "jdbc:cloudbees://${app_name_db}"  // このカッコ、いらないんだって…クソッ
            username = "${db_user}"      // 適宜書き換える必要がある箇所
            password = "${db_password}"  // 適宜書き換える必要がある箇所
        }
    }
}

わかりにくい!

以上

2019-05-12Grails,Groovy