4VQQPSU%SJWFST w "NB[PO8FC4FSWJDFT w .JDSPTPGU"[VSF w %JHJUBM0DFBO w &YPTDBMF w (PPHMF$PNQVUF&OHJOF w (FOFSJD w .JDSPTPGU)ZQFS7 IUUQTEPDTEPDLFSDPNNBDIJOFESJWFST w 0QFO4UBDL w 3BDLTQBDF w *#.4PGUMBZFS w 0SBDMF7JSUVBM#PY w 7.XBSFW$MPVE"JS w 7.XBSF'VTJPO w 7.XBSFW4QIFSF
%JTDPWFSZ w ͍͔ͭ͘ͷσΟεΧόϦɾόοΫΤϯυͱ࿈ܞ w )PTUFE%JTDPWFSZXJUI%PDLFS)VC w Ϋϥελใ͕هड़͞Εͨ੩తϑΝΠϧ w FUDE w DPOTVM w [PPLFFQFS w *1ΞυϨεϦετࢦఆ w *1ΞυϨεൣғࢦఆ IUUQTEPDTEPDLFSDPNTXBSNEJTDPWFSZ
'JMUFST w εέδϡʔϦϯάͷͨΊͷ͍͔ͭ͘ͷϑΟϧλΛఏڙ͍ͯ͠Δ w $POTUSBJOUϑΟϧλ w "⒏OJUZϑΟϧλ w ྑ͠άϧʔϓʹΑΔϑΟϧλʢίϯςφʗΠϝʔδʗϥ ϕϧʣ w 1PSUϑΟϧλ w %FQFOEFODZϑΟϧλ w ಉҰϊʔυ্ͰͷґଘΛεέδϡʔϦϯάʢWPMVNFTGSPN ʗMJOLʗOFUʣ w )FBMUIϑΟϧλ IUUQTEPDTEPDLFSDPNTXBSNTDIFEVMFSpMUFS
%BODFS"QQ package MyWeb::App; use Dancer2; use Redis; our $VERSION = '0.1'; my $redis_host = $ENV{REDIS_HOST} || 'localhost'; my $redis_port = $ENV{REDIS_PORT} || '6379'; my $redis = Redis->new(server => "${redis_host}:${redis_port}"); get '/' => sub { $redis->incr('hits'); return sprintf("Hello Dancer! I have been seen %s times.", $redis->get('hits')); }; true;
̍ɽ։ൃڥ w ։ൃऀɺϦϙδτϦΛ$MPOF͢Δ͚ͩͰΞϓϦέʔγϣ ϯΛ։ൃ͢ΔڥΛߏஙͰ͖Δ w EPDLFSNBDIJOFEPDLFSDPNQPTF w खॱ w ʢલఏʣΞϓϦέʔγϣϯϦϙδτϦʹEPDLFS DPNQPTFZNMЋΛؚΊ͓ͯ͘ w ར༻ऀϦϙδτϦΛDMPOFͯ͠EPDLFSDPNQPTFVQ w αʔόىಈϢχοτςετ͕ͦͷ··ಈ͘
̎ɽ$*ڥ w EPDLFSDPNQPTFڥΛͦͷ··$*Ͱಈ࡞ʗςετΛߦ͏ w EPDLFSDPNQPTF w खॱ w ʢલఏ݅ʣέʔε̍ͷڥΛ༻ҙ͓ͯ͘͠ w $*ͷதͰҎԼͷ༷ͳίϚϯυΛ࣮ߦ͢Δ w EPDLFSDPNQPTFCVJMEʜVQʜSVONBLFUFTUʜ w 3FG%SPOFpHͰ$*ςετͯ͠ΈΔ w IUUQRJJUBDPNUPSJUPSJJUFNT GDEBEE
̏ɽϚϧνΫϥυΫϥελ w %PDLFS4XBSNͰ؆୯ϚϧνΫϥυΫϥελʂʁʢະདྷͷ ʴໝؚΉʣ w %PDLFS.BDIJOF%PDLFS$PNQPTF%PDLFS4XBSN w खॱ w %PDLFS.BDIJOFͰ֤Ϋϥυʹ7.ཱͯΔ w %PDLFS4XBSNͰΫϥελϦϯά w %PDLFS$PNQPTFͰίϯςφஔ w %/4Ͱ֤ΫϥυڥʹϧʔςΟϯά w σʔλετΞ3JBL$BTTBOESB
[FNCVUTV͞Μ w %PDLFSʗ)BTIJDPSQͳͲͷใ༁Λެ։͞Ε͍ͯΔ w %PDLFS.BDIJOFυΩϡϝϯτࢀߟຊޠ༁ w IUUQRJJUBDPN[FNCVUTVJUFNTEEBEDB w %PDLFS$PNQPTFυΩϡϝϯτࢀߟຊޠ༁ɾ࣍ w IUUQRJJUBDPN[FNCVUTVJUFNTDDEBCB w %PDLFS4XBSNυΩϡϝϯτࢀߟຊޠ༁ɾ࣍ w IUUQRJJUBDPN[FNCVUTVJUFNTBGBEEFF
%PDLFS4XBSN3PBENBQ w ΈࠐΈεέδϡʔϥͷվળ w Ծίϯςφ*%ʗϗετো࣌Ϧόϥϯεʗάϩʔόϧεέδϡʔϥɹɹɹ w 4XBSNϚελʔϦʔμʔબग़ w "1*Ϛονϯά w ϚϧνϗετωοτϫʔΫ w ֦ுੑͷߟྀ w εέδϡʔϥͷϓϥάΠϯԽ w NFTPTLVCFSOFUFT
·ͱΊ w %PDLFSܑ̏ఋΛ͏ͱ%PDLFSΛΏΔ;Θʹར༻͢Δ͜ͱ͕Ͱ͖Δ w ౷Ұ͞ΕͨΠϯλϑΣʔεʗϙʔλϒϧʗॊೈ w ։ൃڥͱͯ͠ͷར༻ w ेར༻Մೳ w ຊ൪ڥͱͯ͠ͷར༻ w ·ͩ·ͩ՝ଟ͍͕ɺ͖ͪΜͱϩʔυϚοϓ͕ఏࣔ͞Ε͍ͯΔ w %PDLFSܑ̏ఋʹɺເ͕͋Δοʂʂʂ
·ͱΊ w %PDLFSܑ̏ఋΛ͏ͱ%PDLFSΛΏΔ;Θʹར༻͢Δ͜ͱ͕Ͱ͖Δ w ౷Ұ͞ΕͨΠϯλϑΣʔεʗϙʔλϒϧʗॊೈ w ։ൃڥͱͯ͠ͷར༻ w ेར༻Մೳ w ຊ൪ڥͱͯ͠ͷར༻ w ·ͩ·ͩ՝ଟ͍͕ɺ͖ͪΜͱϩʔυϚοϓ͕ఏࣔ͞Ε͍ͯΔ w %PDLFSܑ̏ఋʹɺເ͕͋Δοʂʂʂ ܑ̐ఋ
͓·͚ɿ%PDLFS$PNQPTFิ w Ͱ࣮͞ΕͨػೳʢҰ෦ʣ w EPDLFSDPNQPTFVQͷվળ w EPDLFSDPNQPTFTUPQLJMMSNTDBMF͕ฒྻ࣮ߦ͢ΔΑ͏ʹͳͬͨ w DPOUBJOFS@OBNFͰίϯςφ໊ΛΧελϚΠζͰ͖ΔΑ͏ʹͳͬͨ w αʔϏε໊ʹʮʯʮʯʮ@ʯΛؚΊΕΒΕΔΑ͏ʹͳͬͨ w MPH@ESJWFSͰҙͷϩάυϥΠόΛར༻Ͱ͖ΔΑ͏ʹͳͬͨ w ඪ४ೖྗ͔ΒߏΛಈతߏஙͰ͖ΔΑ͏ʹͳͬͨ w FDIPSFEJT\JNBHFSFEJT^cEPDLFSDPNQPTFpMFVQ
͓·͚ɿ%PDLFS$PNQPTFิ w ʢ͓ͦΒ͘ʣͰڥมपΓͷվળ͕ߦΘΕΔʂ w IUUQTHJUIVCDPNEPDLFSDPNQPTFQVMM w γΣϧڥมΛͦͷ··:".-ϑΝΠϧͰهड़͢Δ͜ͱ ͕Ͱ͖ΔΑ͏ʹͳΔ $ export POSTGRES_VERSION=9.3 db: image: "postgres:${POSTGRES_VERSION}"