At Tokyu RubyKaigi 09 #tqrk09
/FUqJYͷNJDSPTFSWJDFTελοΫͰ3VCZΞϓϦέʔγϣϯΛಈ͔ͯ͠ΈΔ
View Slide
σϞ
docker-machine lsNAME ACTIVE DRIVER STATE URLdefault * virtualbox Running tcp://192.168.99.100:23 docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}{{(index $conf 0).HostPort}} {{end}}' zuul_messenger8080/tcp -> 8000 curl http://192.168.99.100:8000{"message":"Minnano Wedding is hiring."}
Έͳ͞Μɺ͜Μͳ͜ͱʹ͓ࠔΓͰ͔͢ʁ
w ରԠσόΠε͕ଟ͍ʢҎ্ʣw τϥϑΟοΫ͕ଟ͍ʢશถͷʣ
ͨͿΜ͍ͳ͍ʜʜ
/FUqJYελοΫNJDSPTFSWJDFT ΞʔΩςΫνϟͷදྫ
EPO`UFWFODPOTJEFSNJDSPTFSWJDFTVOMFTTZPVIBWFBTZTUFNUIBUTUPPDPNQMFYUPNBOBHFBTBNPOPMJUIIUUQNBSUJOGPXMFSDPNCMJLJ.JDSPTFSWJDF1SFNJVNIUNM
IUUQNBSUJOGPXMFSDPNCMJLJ.JDSPTFSWJDF1SFNJVNIUNM
৫ʹΑͬͯʮෳࡶʯͷఆٛҟͳΔ
ڞ௨ϥϯλΠϜαʔϏεͱϥΠϒϥϦʔϚΠΫϩαʔϏεΛՃ͢ΔϥϯλΠϜίϯςφʔͱϥΠϒϥϦʔɺαʔϏεɻΫϥυϓϥοτϑΥʔϜɺ/FUqJYͷେ෦ΛΊΔαʔϏε܈ͷجૅͰ͋ΓɺςΫϊϩδʔελοΫͰ͢ɻΫϥυϓϥοτϑΥʔϜɺΫϥυαʔϏεΞϓϦέʔγϣϯϥΠϒϥϦɺΞϓϦέʔγϣϯίϯςφ͔Βߏ͞Ε·͢ɻಛʹϓϥοτϑΥʔϜʹΑͬͯɺ&VSFLBʹΑΔαʔϏεσΟεΧόϦɺ"SDIBJVTʹΑΔࢄઃఆཧɺ3JCCPOʹΑΔϨδϦΤϯεͰΠϯςϦδΣϯτͳϓϩηεʗαʔϏεؒ௨৴ͳͲ͕ɺఏڙ͞Ε·͢ɻ୯ҰͷαʔϏεݺͼग़͠ʹͱͲ·Βͳ͍৴པੑΛఏڙ͢ΔͨΊʹɺ)ZTUSJYʹΑͬͯϥϯλΠϜͰಠཱͨ͠ϨΠςϯγͱোੑ͕ఏڙ͞Ε·͢ɻ͜ΕΒͷϥΠϒϥϦʔαʔϏεɺ+7.ϕʔείϯςφͰ͋ΕͲͷΑ͏ͳڥͰಈ࡞͠·͢ɻ·ͨɺϓϥοτϑΥʔϜ+7.ίϯςφαʔϏεΛɺ,BSZPOͱ(PWFSOBUPSɺඇ+BWBϥϯλΠϜڥ͚ʹ1SBOBαΠυΧʔʹΑΓɺఏڙ͠·͢ɻ1SBOB͕ΠϯελϯεͰϓϩΩγػೳΛఏڙ͢Δͷʹର͠ɺ;VVMʢ)ZTUSJYͱ&VSFLBɺ3JCCPOͷϓϩηεؒ௨৴ػೳΛ౷߹͢ΔͷʣɺΫϥυڥͷڥքʹ͓͚ΔಈతʹεΫϦϓτʹΑ੍ͬͯޚՄೳͳϓϩΩγΛఏڙ͠·͢ɻ
ύϧεͷϑΝϧγͷϧγ͕ύʔδͰίΫʔϯʘ ?P?ʗ
ରԠσόΠε͕ଟ͍͔ΒɺσόΠε͝ͱͷࠩҟΛड͚ೖΕɺσόΠεຖʹ࠷దԽ͞ΕͨϨεϙϯεΛฦ٫͢Δඞཁ͕͋Δɻ
ΫϥΠΞϯτ3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε3FTPVSDFCBTFE"1*
ΫϥΠΞϯτ3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε"1*(BUFXBZ&YQFSJFODFCBTFE"1*Ϋϥυڥͷڥքʹ͓͚ΔಈతʹεΫϦϓτʹΑ੍ͬͯޚՄೳͳϓϩΩγ
ରԠσόΠε͕ଟ͍͔ΒɺҰ෦ͷσόΠε͕ར༻͢Δ෦ͷͨΊ͚ͩʹɺΞϓϦέʔγϣϯશମ͕Τϥʔʹͳͬͯ΄͘͠ͳ͍ɻ
ΫϥΠΞϯτ3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε"1*(BUFXBZ
ΫϥΠΞϯτ3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε3&45GVM"1*Ϧιʔε"1*(BUFXBZϨΠςϯγͱোੑ
ରԠσόΠε͕ଟ͍͔ΒɺҰ෦ͷσόΠε͕ར༻͢Δ෦ͷͨΊ͚ͩʹɺΞϓϦέʔγϣϯશମΛεέʔϧͤͨ͘͞ͳ͍ɻ
ϩʔυόϥϯα"1*(BUFXBZαʔϏεϊʔυαʔϏεϊʔυαʔϏεϊʔυαʔϏεͷ͕૿Ճ͢ΔʹͭΕϩʔυόϥϯαͷཧ͕ࠔʹͳΔ
"1*(BUFXBZαʔϏεϊʔυαʔϏεϊʔυαʔϏεϊʔυΫϥΠΞϯταΠυϩʔυόϥϯγϯάʹΑΔϨδϦΤϯεͰΠϯςϦδΣϯτͳϓϩηεʗαʔϏεؒ௨৴
αʔϏεσΟεΧόϦʹΑΔ ಈతͳϊʔυͷొͱཁٻ"1*(BUFXBZαʔϏεϊʔυαʔϏεϨδετϦొҰཡ
αʔϏεϨδετϦͷొͳͲΛ ఏڙ͢Δ+7.ίϯςφαʔϏεαʔϏεϨδετϦొϔϧενΣοΫίϯςφαʔϏεΞϓϦέʔγϣϯ
ϦΫΤετΫϥΠΞϯτ ΞϓϦέʔγϣϯ"1*(BUFXBZαʔϏεϨδετϦϨεϙϯεొϦΫΤετҰཡϨεϙϯεΞϓϦέʔγϣϯίϯςφαʔϏεΞϓϦέʔγϣϯίϯςφαʔϏεϩʔυόϥϯγϯάʴϨΠςϯγɾোϨΠϠʔ
;VVM3JCCPO)ZTUSJY&VSFLB,BSZPO 1SBOBϦΫΤετΫϥΠΞϯτ ΞϓϦέʔγϣϯ"1*(BUFXBZαʔϏεϨδετϦϨεϙϯεొϦΫΤετҰཡϨεϙϯεΞϓϦέʔγϣϯίϯςφαʔϏεΞϓϦέʔγϣϯίϯςφαʔϏεϩʔυόϥϯγϯάʴϨΠςϯγɾোϨΠϠʔ
require 'sinatra'require 'sinatra/json'get '/' dojson(message: 'Minnano Wedding is hiring.')endget '/status' dojson(status: 'OK')end
w αʔϏεϨδετϦͷࣗࣗͷొw αʔϏεϨδετϦ͔ΒͷϔϧενΣοΫw ଞαʔϏεͷσΟεΧόϦͱΫϥΠΞϯταΠυϩʔυόϥϯγϯάw ઃఆใͷऔಘɺߋ৽ʢࠓճݴٴ͍ͯ͠ͳ͍ʣ
αΠυΧʔύλʔϯʹΑΓଞαʔϏεϊʔυʹରͯ͠ΠϯελϯεͰϓϩΩγػೳΛఏڙαʔϏεϨδετϦ1SBOBBQQSCαʔϏεϊʔυαʔϏεϊʔυϦΫΤετϦΫΤετొϔϧενΣοΫϦΫΤετϔϧενΣοΫ
cat Procfileapp: rackup -E production --host 0.0.0.0plana: prana/bin/Prana -c config.properties cat config.propertiesprana.host.healthcheck.url=http://localhost:9292/statusprana.host.healthcheck.timeout=1500prana.proxy.req.acceptencoding=gzipeureka.name=MESSENGEReureka.vipAddress=MESSENGEReureka.port=9292eureka.serviceUrl.default=http://eureka:8080/eureka/v2/eureka.validateInstanceId=false
docker run -d --name exhibitor netflixoss/exhibitor:1.5.2 docker run -d --name eureka -d netflixoss/eureka:1.1.142 docker run -d --name messenger --link eureka:eureka \ takai/messenger bundle exec foreman start docker run -e "origin.zuul.client.DeploymentContextBasedVipAddr-d --name zuul_messenger \ --link eureka:eureka netflixoss/zuul:1.0.28