はじめてのCF buildpack

6,892 views

Published on

Cloud Foundryでも使えるようになったHeroku Buildpackについて解説します。

Published in: Technology

はじめてのCF buildpack

  1. 1. はじめてのCF Buildpack UDCP Kazuto Kusama @jacopen
  2. 2. 自己紹介 • 草間 一人(くさま かずと) • UDCPメンバー ! Twitter: @jacopen • Facebook: jacopen •
  3. 3. 呉鎮守府
  4. 4. UDCP • Blog (U1TB) ! ! ! ! ! • 自転車イベント参加 ! ! • おいしいものを食べる
  5. 5. 今日のお題 ‣ CF v2のBuildpackを触ってみよう! ‣ 経験豊富な人には既知の話が多いかも。 ‣ v1ばっかりでv2あんまり経験無いよ、という人向け
  6. 6. Buildpackとは • Herokuが作った、任意の言 語/フレームワークを利用 できるようになる仕組み • HerokuのCeder Stackで対応 している言語(Ruby, Java, Clojure, Node.js, Scala)は、 Buildpackで実装されている
  7. 7. $ heroku create myapp --buildpack https://github.com/heroku/heroku-buildpack-ruby
  8. 8. Third-Party buildpacks
  9. 9. ということで • とても便利なのでCloud FoundryもBuildpack使えるようにし たよ! ・・・というのが、v2 CFの大きな特徴。
  10. 10. v2でbuildpackを使ってみよう!
  11. 11. CF PHP & Apache Buildpack • mod_phpかphp_fpmかを選べる • Apache 2.2か2.4かを選べる
  12. 12. CF PHP Example WordPress • CF PHP Buildpackで上手く動く ように作られたWordPressのサ ンプル。 • といっても大したことはして いなくて、以下のようなディ レクトリ分けをしただけ • Buildpackのコンフィグを オーバーライドするconfig ディレクトリ • PHPやHTMLが入るhtdocs ディレクトリ
  13. 13. $ git clone git@github.com:dmikusa-pivotal/cf-ex-worpress.git $ cd cf-ex-worpress/ $ cf push --buildpack=https://github.com/dmikusa-pivotal/cf-phpapache-buildpack.git
  14. 14. _人人人人人人_ > 動かない <  ̄Y^Y^Y^Y^Y ̄
  15. 15. $ cf logs wpjacopen VCAP_SERVICES={“mysql-5.5”:[{“name”:”mysqlwpjacopen”,”label”:”mysql-5.5”,”tags":["relational"],"plan":"default","credentials": {"name":"dc75750d21df148fc9942cd9b4e996229","hostname":"xxx.xxx.xxx.xxx"," host":"xxx.xxx.xxx.xxx","port": 3307,"user":"xxxxxxxxxxx","username":"xxxxxxxxxxx","password":"xxxxxxxxxxxxxx xxx","uri":"mysql://xxxxxxxxxxxxx:xxxxxxxx@xxx.xxx.xxx.xxx:3307/ dc75750d21df148fc9942cd9b4e996229"}}]}
  16. 16. その他のCF向けBuildpack • java buildpack • https://github.com/cloudfoundry/java-buildpack
 • cloudfoundry-buildpack-java • https://github.com/cloudfoundry/cloudfoundry-buildpack-java • もうメンテされてない?
 • ruby buildpack • https://github.com/cloudfoundry/heroku-buildpack-ruby
 • nodejs buildpack • https://github.com/cloudfoundry/heroku-buildpack-nodejs
 • ibm-websphere-liberty-buildpack • https://github.com/cloudfoundry/ibm-websphere-liberty-buildpack • 良く分からない\(^o^)/
  17. 17. Community Buildpack • • • • • • • • • • • • • • https://github.com/glyn/virgo-buildpack https://github.com/jmcc0nn3ll/jetty-buildpack https://github.com/dmikusa-pivotal/cf-php-apache-buildpack https://github.com/mstine/heroku-buildpack-clojure https://github.com/BrianMMcClain/heroku-buildpack-haskell https://github.com/michaljemala/cloudfoundry-buildpack-go https://github.com/hmalphettes/heroku-buildpack-go https://github.com/Orange-OpenSource/java-buildpack/blob/jonas/docs/ container-jonas.md https://github.com/dmikusa-pivotal/cf-test-buildpack https://github.com/cloudfoundry-community/nginx-buildpack https://github.com/cloudfoundry-community/.net-buildpack https://github.com/ephoning/heroku-buildpack-python https://github.com/joshuamckenty/heroku-buildpack-python https://github.com/cloudfoundry-community/strongloop-suite-buildpack
  18. 18. HerokuのBuildpackは使えるの? • 使えるものは使える!
  19. 19. 動くことが確認されているHeroku buildpack • • • • https://github.com/heroku/heroku-buildpack-php https://github.com/iphoting/heroku-buildpack-php-tyler https://github.com/heroku/heroku-buildpack-python https://github.com/heroku/heroku-buildpack-scala • with https://github.com/jbayer/hello-scala
  20. 20. 自分でBuildpackを作る!
  21. 21. • ほんとはここでこんなBuildpack作ったぜ(ドヤッ)って言い たかったんだけど・・・ • 時間がありませんでした/(^o^)\ • というか欲しいBuildpack既にあるんだもん・・・
  22. 22. Buildpackの簡単な仕組み解説 • Buildpackの実体は3つのスクリプト • compile • detect • release
  23. 23. compile • 言語の実行環境をセットアップするためのスクリプト • バイナリをダウンロードしてきて配置するスクリプトが多い • PHP buildpackではpythonを使っているが、シェルスクリプト 等でもOK
  24. 24. detect • buildpackの実行条件を指定するスクリプト。 • PHP buildpackの場合、.phpスクリプトがあればOK。 • OKならばexit 0、NGならばexit 1を返すという決まり。
  25. 25. release • なんかメタデータとか入れるらしい
  26. 26. Buildpackを自作するための資料 • Heroku reference • https://devcenter.heroku.com/articles/buildpack-api
 • heroku-buildpack-ffmpeg • https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
 構造がシンプルなので、動作の把握にちょうど良いかも
  27. 27. 質問とかあれば

×