やりたいこと
Gradleで作成したSpringBootのプロジェクトをOpenShiftで実行する。
OpenShiftのアプリケーションはDIYで作成する。
ソースも、Bitbucketで管理することで、無料でソース管理をし、実行環境を構築する。
前提
Gradleで作成したSpringBootのプロジェクトがBitbucketのリポジトリに存在する。
OpenShiftのアカウントがあり、rhcコマンドがしようできるようになっている。
OpenShift用のファイルを作成する
プロジェクトのルートディレクトリに .openshift/action_hooks ディレクトリを作成し、
deploy,start,stopファイルを作成する。
deploy : JDK,Gradleがなければをダウンロードし、gradleでパッケージを作成する。
#!/bin/bash
set -x
if [ ! -d $OPENSHIFT_DATA_DIR/jdk1.8.0_101 ]; then
cd $OPENSHIFT_DATA_DIR
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.tar.gz
tar xvf *.tar.gz
rm -f *.tar.gz
fi
if [ ! -d $OPENSHIFT_DATA_DIR/gradle-2.13 ]; then
cd $OPENSHIFT_DATA_DIR
wget https://services.gradle.org/distributions/gradle-2.13-bin.zip
unzip gradle-2.13-bin.zip
rm -f gradle-2.13-bin.zip
fi
if [ ! -d $OPENSHIFT_DATA_DIR/gradle ]; then
cd $OPENSHIFT_DATA_DIR
mkdir gradle
fi
if [ ! -d $OPENSHIFT_DATA_DIR/logs ]; then
cd $OPENSHIFT_DATA_DIR
mkdir logs
fi
cd $OPENSHIFT_REPO_DIR
export GRADLE_USER_HOME=$OPENSHIFT_DATA_DIR/gradle
export GRADLE_HOME=$OPENSHIFT_DATA_DIR/gradle-2.13
export JAVA_HOME=$OPENSHIFT_DATA_DIR/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$GRADLE_HOME/bin:$PATH
gradle bootRepackage
start : 起動時に実行されるスクリプト
#!/bin/bash
source $OPENSHIFT_CARTRIDGE_SDK_BASH
set -x
export JAVA_HOME=$OPENSHIFT_DATA_DIR/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
cd $OPENSHIFT_REPO_DIR
nohup java -jar build/libs/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} &
stop : 停止時に実行されるスクリプト
#!/bin/bash
source $OPENSHIFT_CARTRIDGE_SDK_BASH
PID=$(ps -ef | grep java.*\.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
client_result "Application is already stopped"
else
kill $PID
fi
各ファイルは実行権を追加する。
OpenShiftにアプリケーションを作成する。
以下のコマンドでDIYカートリッジでアプリケーションを作成する。
rhc app create <app-name> diy-0.1
テンプレートのファイルが作成されるので、一度削除し、コミットする。
cd <app-name>
git rm -rf .openshift README.md diy misc
git commit -am "Removed template application source code"
Bitbucketのリポジトリをリモートリポジトリとして追加し、pullする。
git remote add upstream https://<user>@bitbucket.org/<user>/<repository>.git
git pull -s recursive -X theirs upstream master
Bitbucketのからpullしたファイルを、OpenShiftにpushする。
git push
deploy, start の各ファイルが実行されるので、SpringBootが起動したら、ブラウザで画面にアクセスする。
http://<app-namd>-<domain>.rhcloud.com/
メモ
- action_hooksのファイルに実行権を忘れると、当たり前だが、失敗する。
- build.gradleは、変更しなかった。