HerokuにRatpackアプリをデプロイする

HerokuにシンプルなRatpackアプリをデプロイすることは、本来よりもはるかに複雑です。 多くの試行錯誤の後、私はようやく配備を成功させるための機能する構成を取得することができました。 この記事は、アプリケーションを段階的に展開する方法に関するマニュアルです。 次の記事では、Gradleプラグインを使用してプロセスを簡素化する方法を説明します。



アーティファクト


正常にデプロイするには、アプリケーションを正常に検出するために、Herokuのプロジェクトに特定のアーティファクトを提示する必要があります。 HerokuはGitをデプロイに使用するため、これらのファイルをGitの別のブランチに配置することをお勧めします。

まず、次のフォルダー構造を作成する必要があります。

ビン

├──コンパイル

└──検出

次の内容のファイル:

ビン/検出

#!/usr/bin/env bash # bin/use <build-dir> if [ -f $1/src/ratpack/ratpack.groovy ]; then echo "Ratpack" && exit 0 else echo "no" && exit 1 fi
      
      





ビン/コンパイル

 #!/usr/bin/env bash # bin/compile <build-dir> <cache-dir> # fail fast set -e BIN_DIR=$(cd $(dirname $0); pwd) # absolute path # parse args BUILD_DIR=$1 CACHE_DIR=$2 #env variables JAVA_DIST="openjdk1.7.0_21" JDK7_URL="https://s3.amazonaws.com/heroku-jdk/${JAVA_DIST}.tar.gz" #create the cache dir if it doesn't exist mkdir -p $CACHE_DIR cd "$BUILD_DIR" #jdk7 if [ -d .jdk7 ]; then echo "-----> .jdk7 folder found, moving along." else echo -n "-----> .jdk7 folder not found! " if [[ -d "$CACHE_DIR/.jdk7" ]]; then echo -n "Copying jdk from cache to app... " cp -r "$CACHE_DIR/.jdk7" "$BUILD_DIR" echo "Done!" else echo -n "-----> Installing ${JAVA_DIST} build (to .jdk7)....." mkdir "$BUILD_DIR/.jdk7" cd "$BUILD_DIR/.jdk7" curl --max-time 180 --location "$JDK7_URL" | tar xz cd "$BUILD_DIR" echo "Done!" fi fi cd $BUILD_DIR export JAVA_HOME="$BUILD_DIR/.jdk7" export PATH="$JAVA_HOME/bin:$PATH" echo "" echo "-----> Building project with Gradle wrapper:" echo " ./gradlew clean installApp" export GRADLE_OPTS="-Dfile.encoding=UTF-8 -server -Xmx512m -XX:+UseCompressedOops" export GRADLE_USER_HOME="$CACHE_DIR/.gradle" ./gradlew clean installApp rm -rf "$CACHE_DIR/.jdk7" cp -r .jdk7 "$CACHE_DIR/.jdk7"
      
      







次に、Procfileが必要です。Ratpackプロジェクトのルートディレクトリに残します。

procfile

 --- addons: config_vars: JAVA_OPTS: -Dfile.encoding=UTF-8 -server -Xmx512m -XX:+UseCompressedOops default_process_types: web: build/install/ratpack/bin/ratpack
      
      







build / install / ratpack / bin / ratpackファイルbuild / install / ratpackフォルダーがWebプロセスに表示されます。 このファイルとフォルダーには、プロジェクトのルートフォルダーの名前が付けられます。 ルートプロジェクトの名前は生成されたハッシュに由来するため、Herokuでのデプロイでこの値をオーバーライドすることができます(そして必要です)。 これを修正するには、プロジェクトのルート名を既知のもの(この場合はratpack)に設定する必要があります。 これは、プロジェクトのルートにある設定ファイルで構成できます。



settings.gradle

rootProject.name = 'ratpack'

次に、展開プロセス中に提供された$ PORT変数を指すRATPACK_OPTS環境変数を設定する必要があります。 profile.dフォルダーのプロジェクトの腸に隠されたスクリプトに登録する必要があります。



.profile.d / setenv.sh



 #!/bin/bash echo "Setting environment varialbes..." export RATPACK_OPTS="-Dratpack.port=$PORT" export JAVA_HOME="${BUILD_DIR}/.jdk7"
      
      







これで、次のフォルダー構造ができました。

├──ビン

│├──コンパイル

│└──検出

├──Procfile

├──.profile.d

│└──setenv.sh

└──settings.gradle



展開プロセス


ここで、buildpackコマンドを使用してHerokuで新しいアプリケーションを作成する必要があります。 この単純なコマンドは、すべてのコマンドをプロジェクトで作成したアーティファクトに転送します。 チームは、Heroku上のUbuntu 10.04に基づいたCedar Stackなどのアプリケーションも構築します。

herokuアプリ:myapplication --buildpack github.com/kr/heroku-buildpack-inline.gitを作成します



次に、展開用に作成した新しいブランチに切り替えて、すべてのアーティファクトをコミットします。



 git checkout -b deploy git add bin Procfile settings.gradle .profile.d git commit -m 'Heroku deployment artifacts.' git push heroku deploy:master
      
      







これで、アプリケーションが正常にデプロイされたことを確認できます。

----->カスタムgitビルドパックの取得...完了

-----> Ratpackアプリが検出されました

-----> .jdk7フォルダーが見つかりません! キャッシュからアプリへのjdkのコピー...完了!



-----> Gradleラッパーを使用したプロジェクトのビルド:

./gradlew clean installApp

<snip />

----->プロセスタイプの検出

Procfileは型を宣言します-> JAVA_HOME、JAVA_OPTS、web



----->コンパイルされたスラッグのサイズ:64.8MB

----->起動...完了、v38

Herokuにデプロイされたmyapplication.herokuapp.com

そして、ログを見てこれを確認できます。

herokuログ--tail --num 100 --app myapplication



次の記事では、 ここで提案されているGradleプラグインを使用して同じことを行う方法を説明します 。 ソースはここにあります 。 元の記事はこちらです。 ご清聴ありがとうございました。



All Articles