はじめてのcf buildpack

Post on 28-May-2015

4.243 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

はじめてのCF Buildpack

UDCP Kazuto Kusama @jacopen

自己紹介

•草間 一人(くさま かずと)

• UDCPメンバー

!• Twitter: @jacopen • Facebook: jacopen

呉鎮守府

UDCP

• Blog (U1TB) !!!!!

• 自転車イベント参加 !!

• おいしいものを食べる

今日のお題

‣ CF v2のBuildpackを触ってみよう!

‣ 経験豊富な人には既知の話が多いかも。

‣ v1ばっかりでv2あんまり経験無いよ、という人向け

Buildpackとは

• Herokuが作った、任意の言語/フレームワークを利用できるようになる仕組み

• HerokuのCeder Stackで対応している言語(Ruby, Java,

Clojure, Node.js, Scala)は、Buildpackで実装されている

$ heroku create myapp --buildpack https://github.com/heroku/heroku-buildpack-ruby

Third-Party buildpacks

ということで

• とても便利なのでCloud FoundryもBuildpack使えるようにしたよ! ・・・というのが、v2 CFの大きな特徴。

v2でbuildpackを使ってみよう!

CF PHP & Apache Buildpack

• mod_phpかphp_fpmかを選べる

• Apache 2.2か2.4かを選べる

CF PHP Example WordPress

• CF PHP Buildpackで上手く動くように作られたWordPressのサンプル。

• といっても大したことはしていなくて、以下のようなディレクトリ分けをしただけ

• Buildpackのコンフィグをオーバーライドするconfig

ディレクトリ • PHPやHTMLが入るhtdocs

ディレクトリ

$ git clone git@github.com:dmikusa-pivotal/cf-ex-worpress.git

$ cd cf-ex-worpress/

$ cf push --buildpack=https://github.com/dmikusa-pivotal/cf-php-apache-buildpack.git

_人人人人人人_ > 動かない < ‾Y^Y^Y^Y^Y‾

$ cf logs wpjacopen

VCAP_SERVICES={“mysql-5.5”:[{“name”:”mysql-wpjacopen”,”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":"xxxxxxxxxxxxxxxxx","uri":"mysql://xxxxxxxxxxxxx:xxxxxxxx@xxx.xxx.xxx.xxx:3307/dc75750d21df148fc9942cd9b4e996229"}}]}

その他の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^)/

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

HerokuのBuildpackは使えるの?

• 使えるものは使える!

動くことが確認されている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

自分でBuildpackを作る!

• ほんとはここでこんなBuildpack作ったぜ(ドヤッ)って言いたかったんだけど・・・

• 時間がありませんでした/(^o^)\

• というか欲しいBuildpack既にあるんだもん・・・

Buildpackの簡単な仕組み解説

• Buildpackの実体は3つのスクリプト

• compile • detect • release

compile

• 言語の実行環境をセットアップするためのスクリプト • バイナリをダウンロードしてきて配置するスクリプトが多い • PHP buildpackではpythonを使っているが、シェルスクリプト等でもOK

detect

• buildpackの実行条件を指定するスクリプト。

• PHP buildpackの場合、.phpスクリプトがあればOK。

• OKならばexit 0、NGならばexit 1を返すという決まり。

release

• なんかメタデータとか入れるらしい

Buildpackを自作するための資料

• Heroku reference • https://devcenter.heroku.com/articles/buildpack-api

• heroku-buildpack-ffmpeg • https://github.com/shunjikonishi/heroku-buildpack-ffmpeg 構造がシンプルなので、動作の把握にちょうど良いかも

質問とかあれば

top related