OpenShift v3 のJBoss Web Server (tomcat7)+MySQL テンプレートの使い方

Tomcat/MySQLのテンプレートを使う場合、少しだけ設定が必要だったのでメモ

やりたいこと

JBoss Web Server (tomcat7)/MySQLのテンプレートを使って簡単なアプリケーションのデプロイ。デプロイするアプリケーションはtomcatのサンプルアプリケーションを利用します。

利用するテンプレート

パラメータ

パラメータ名 備考
APPLICATION_HOSTNAME sample-extdbtest.apps.cloud 公開するときのFQDNを指定
GIT_URI https://github.com/apache/tomcat.git Tomcatのサンプルアプリ

アプリケーションの確認

http://sample-extdbtest.apps.cloud/examples/index.html にアクセスして、以下のページが表示されるはず。だった。。。

<title>Apache Tomcat Examples</title>
</head>
<body>
<p>
<h3>Apache Tomcat Examples</H3>
<p></p>
<ul>
<li><a href="servlets">Servlets examples</a></li>
<li><a href="jsp">JSP Examples</a></li>
<li><a href="websocket/index.xhtml">WebSocket (JSR356) Examples</a></li>
<li><a href="websocket-deprecated">WebSocket Examples using the deprecated
    Apache Tomcat proprietary API</a></li>
</ul>
</body></html>

発生した問題

build

サンプルアプリケーションのタグがmasterではなくtrunkだった。

これは、アプリケーション作成時に設定するパラメータGIT_REFtrunkに設定すれば良い。すでに作成済みのbuildConfigを直接編集してもOK。

  source:
    git:
      ref: trunk
      uri: https://github.com/apache/tomcat.git
    type: Git

編集後、build を実行。

oc start-build jws-app

deploy

ServiceAccount、Secretがない

deploy に失敗するので、oc get events でイベントログを確認したところ、Podの作成にjws-service-accountがないというエラー。 これを解決して、気を取り直して再デプロイするも、今度はVolumeをマウントするのにjws-app-secretがないというエラー。 jws-service-accountとjws-app-secretをhttps://github.com/jboss-openshift/application-templates/blob/master/secrets/jws-app-secret.jsonに使って作成。

oc create -f jws-app-secret.json

設定後、deploy を再実行。

oc deploy jws-app --latest

これで無事にアプリケーションがデプロイできました。