前回はセットアップを進めただけで、 cf コマンドまで動かせない状態でした。
どうしようも無くわからなかったので、 Github でダメ元で聞いてみたら、親切丁寧にサポートしてもらえて cf login
までうまく動かせるようになりました。どうやら、 DNS に BIND を使っているようで、 テンプレートファイルから IP を変えていたので DNS がうまく動いていなかったようです。
しかし、私の英語は本当に中学生以下ですが、やりたいことはなんとなく伝わって良かったです。
DNS の設定方法
次のドキュメントを参考にして、 setup_dns.py
をダウンロード。
以下コマンドをdevboxで実行。IPはパブリックIPにより変わります。
sudo python setup_dns.py -d cf.azurelovecf.com -i 10.0.0.5 -e 40.74.xxx.xxx -n 40.74.xxx.xxx
cf login コマンドの実行
devbox で以下コマンドを実行
cf login -a https://api.cf.azurelovecf.com --skip-ssl-validation
ユーザー名パスワードを聞かれるので、デフォルトは次の通り
Email> admin Password> c1oudc0w
次の通り出力されればログイン成功
Authenticating... OK Targeted org default_organization API endpoint: https://api.cf.azurelovecf.com (API version: 2.42.0) User: admin Org: default_organization Space: No space targeted, use 'cf target -s SPACE'
Spring Boot アプリをデプロイする
次の記事を参考に、Spring Boot のアプリケーションをデプロイします。Pivotal Cloud Foundry 向けの説明ですが、cf コマンドは共通なので、Open な Cloud Foundry でも同じように動きます。
Space を作る
アプリを置く場所に Space というものが必要みたいなので、次のコマンドを実行して作ります。すべてdevbox上で作業します。
$ cf create-space sandbox Creating space sandbox in org default_organization as admin... OK Assigning role SpaceManager to user admin in org default_organization / space sandbox as admin... OK Assigning role SpaceDeveloper to user admin in org default_organization / space sandbox as admin... OK TIP: Use 'cf target -o "default_organization" -s "sandbox"' to target new space
成功したら、TIP のとおり cf target
で作成した space を使うようにする
$ cf target -o "default_organization" -s "sandbox" API endpoint: https://api.cf.azurelovecf.com (API version: 2.42.0) User: admin Org: default_organization Space: sandbox
JDK をセットアップする
JDKが入っていないので、次の記事を参考に Oracle JDK をセットアップする。 qiita.com
ソースをクローンしてビルドする
$ git clone https://github.com/making/hello-pws $ cd hello-pws $ ./mvnw package
パッケージをPUSHする
次のコマンドで Cloud Foundry にパッケージをデプロイします。 Starting app hello-pws in org default_organization / space sandbox as admin...
のところでやたら待たされて不安になりましたが、待っていたら進みました。
$ cf push hello-pws -p target/hello-pws.jar -m 256M Creating app hello-pws in org default_organization / space sandbox as admin... OK Creating route hello-pws.cf.azurelovecf.com... OK Binding hello-pws.cf.azurelovecf.com to hello-pws... OK Uploading hello-pws... Uploading app files from: target/hello-pws.jar Uploading 13.2M, 109 files Done uploading OK Starting app hello-pws in org default_organization / space sandbox as admin... -----> Downloaded app package (12M) -----> Java Buildpack Version: v3.3.1 | https://github.com/cloudfoundry/java-buildpack.git#063836b -----> Downloading Open Jdk JRE 1.8.0_65 from https://download.run.pivotal.io/openjdk/trusty/x86_64/openjdk-1.8.0_65.tar.gz (3.8s) Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.8s) -----> Downloading Open JDK Like Memory Calculator 2.0.1_RELEASE from https://download.run.pivotal.io/memory-calculator/trusty/x86_64/memory-calculator-2.0.1_RELEASE.tar.gz (0.1s) Memory Settings: -Xss853K -Xmx160M -XX:MetaspaceSize=64M -Xms160M -XX:MaxMetaspaceSize=64M -----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://download.run.pivotal.io/auto-reconfiguration/auto-reconfiguration-1.10.0_RELEASE.jar (0.5s) -----> Uploading droplet (57M) 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 1 of 1 instances running App started OK App hello-pws was started using this command `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.1_RELEASE -memorySizes=metaspace:64m.. -memoryWeights=heap:75,metaspace:10,native:10,stack:5 -memoryInitials=heap:100%,metaspace:100% -totMemory=$MEMORY_LIMIT) && SERVER_PORT=$PORT $PWD/.java-buildpack/open_jdk_jre/bin/java -cp $PWD/.:$PWD/.java-buildpack/spring_auto_reconfiguration/spring_auto_reconfiguration-1.10.0_RELEASE.jar -Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY org.springframework.boot.loader.JarLauncher` Showing health and status for app hello-pws in org default_organization / space sandbox as admin... OK requested state: started instances: 1/1 usage: 256M x 1 instances urls: hello-pws.cf.azurelovecf.com last uploaded: Mon Dec 21 11:49:44 UTC 2015 stack: cflinuxfs2 buildpack: java-buildpack=v3.3.1-https://github.com/cloudfoundry/java-buildpack.git#063836b java-main open-jdk-like-jre=1.8.0_65 open-jdk-like-memory-calculator=2.0.1_RELEASE spring-auto-reconfiguration=1.10.0_RELEASE state since cpu memory disk details #0 running 2015-12-21 11:54:38 AM 0.0% 222.3M of 256M 135M of 1G
curl で動作を確認する
curl で動作を確認します。レスポンスがあったときは嬉しくて小さくガッツポーズしてしました。
$ curl http://hello-pws.cf.azurelovecf.com Hello from 10.0.0.5:61001
まとめ
なんとか Cloud Foundry にアプリケーションをデプロイするところまでたどり着けました。スケールさせたりとか、DBを作ったりとかはまだわからないので、引き続き調べます。