Dockerで開発、ステージ、本番へのリリースから運用までを一通り行った結果、どのようなことに注意して開発すべきか、どのような構成をとるべきか、どうやって本番リリースするのかについてまとめます。Laravel, Lumenを使っていたため、PHPで開発を行っている方たちにとっても、本番導入を検討するにあたって良い目安になるかと思います。
DockerΛຊ൪ͰͬͯΈ͔ͯͬͨ͜ͱPHPΧϯϑΝϨϯεԬ2017*OOPWBUPS+BQBO*ODॴ྄&OHJOFFS
View Slide
͓ΒͤεϥΠυSpeakerDeckʹΞοϓ͠·͕͢…ࡱӨࣗ༝ʹ͍ͯͯ͋͠Γ·ͤΜ!IBOIBO
ίϯςφʹڵຯ͋Γ·͔͢ʁ
໌Δͦ͏ͳະདྷࠒ͔Βͣͬͱ্ঢʹ͋Δ
Ξϯέʔτw։ൃͰίϯςφ %PDLFSΛ͍ͬͯΔʁwຊ൪ͰίϯςφΛӡ༻͍ͯ͠Δʁ
ࠓ͓͢Δ͜ͱࢲ͜͏ͬͨΑʂͷͰ͢
ׂͱී௨ͷ1)1FSͰΦϯϥΠϯυΩϡϝϯτͱॻ੶ΛཔΓʹ%PDLFSΛͬͨ։ൃʙຊ൪·ͰͰ͖Δ࣌ʹͳΓ·ͨ͠
ࠓ͓͢Δ͜ͱ͜ΕͳΒࢲͰग़དྷͦ͏ͩͳʂͬͯࢥͬͯ͘ΕͨΒخ͍͠Ͱ͢ɻ
։ൃεςʔδຊ൪ӡ༻ࠓίί
ԿΑΓ·ͣඞཁͳ͜ͱ
ίϯςφϨδετϦίϯςφ։ൃͷத৺ɻ
ίϯςφϨδετϦ໊લ ྉۚ ಛDocker Cloud ༗ྉ ݩTutumGitlab ແྉprivate repoOKͨ·ʹམͪΔquay.io ༗ྉ ൃԻ[ki:]ACS EC2͏ͳΒແྉ awsίϚϯυͰ؆୯ೝূGCP ༗ྉCloudStorageͱωοτϫʔΫԼΓʹ՝ۚػೳେࠩͳ͍ɻར༻͍͢͠ॴͰྑ͍ɻ
ຊͷ࠷ॏཁࣄ߲
EPDLFSͷഁյతมߋw dWͰϏϧυͯ͠ϨδετϦʹQVTIw WdͰQVMMग़དྷͳ͍ɻIUUQEPDTEPDLFSKQFOHJOFCSFBLJOH@DIBOHFTIUNM
EPDLFSDPNQPTFͷόʔδϣϯCompose Engine จ๏~1.6.x 1.09 v11.6.x~ 1.10 v21.6.x~ 1.12 v2.11.9.x~ 1.13~ v3όʔδϣϯͱ͑Δจ๏ͷ͕͍ؔ͜͠
ϨδετϦΛ༻ҙͨ͠ΒΞϓϦͷ४උ
ΞϓϦέʔγϣϯͷߏΞϓϦɺϦϙδτϦɺ%PDLFSpMF͕ݪଇWBHSBOUͬͨ։ൃͱײ֮ͱͯ͠ಉ͡
ΞϓϦέʔγϣϯͷߏ%PDLFSpMFνϥݟதటष͍
ΞϓϦέʔγϣϯͷߏඞཁͳϛυϧΣΞDPNQPTFͰఆٛ
ΞϓϦέʔγϣϯͷߏEPDLFSDPNQPTFͷதࣗͷΞϓϦCVJME طଘΠϝʔδQVMM
ΞϓϦέʔγϣϯͷߏͦͷଞͷϙΠϯτwઃఆใڥม͔ΒwωοτϫʔΫઃఆग़དྷΔwDPNQPTFϑΝΠϧܧঝJODMVEF͕Մೳ
Ξϯνύλʔϯίϯςφىಈ࣌ʹίϯςφͷதΛॻXFC্ʹɺ͜ͷखͷํ๏͕ྑ͘ॻ͍ͯ͋ΔwDPNQPTFSJOTUBMMwOQNJOTUBMMwHJUQVMM
ෳΞϓϦ։ൃͷ߹ґଘΞϓϦϨδετϦܦ༝ͰQVMM͜Ε͕ϨδετϦ͕࠷ॳʹඞཁͳཧ༝
ΞϯνύλʔϯϦϙδτϦͰ%PDLFSpMFΛूதཧ$*ͮ͠Β͍͠ɺڥߏஙखॱ͕ෳࡶ
ࢀߟใ-BSBWFMTLFMUPOhttps://github.com/hanhan1978/docker-laravel54-skelton
ࢀߟใEPDLFSGPSNBD͍https://blog.hanhans.net/2017/05/23/docker-for-mac-slow/ᘳͱݴ͑ͳ͍͕ɺղফ͞Εͭͭ͋Δ
ࢀߟใDPNQPTFSJOTUBMMͷΩϟογϡhttps://blog.hanhans.net/2017/02/25/docker-cache-composer-install/
ίϯςφͷ࣮ߦڥΛ४උϚωʔδυɾαʔϏεࣗલͰ४උOR
ϚωʔδυɾαʔϏε(,&(PPHMF$POUBJOFS&OHJOF%PDLFS$MPVE4XBSN.PEF #&5"
ࣗલͰ४උ$PSF04,VCFSOFUFT.FTPTσϑΝΫτελϯμʔυɻུশ,4౷߹తͳίϯςφ࣮ߦڥͰϦιʔεϞχλଐࢲͬͨ͜ͱͳ͍ɻͱΓ͋͑ͣ,4ͱྑ͘ൺֱ͞ΕͯΔɻ4XBSN.PEFͰ͍ͬͯΔྫԿ͔݅ݟ͔͚ͨɻ,4ΑΓγϯϓϧˠ6QEBUF͕සൟ͗͢ΔͷͰࣗલӡ༻͓קΊ͠ͳ͍
͕ࣗͬͨ͜ͱ,VCFSOFUFTXJUILVCFBXT"84Ͱ͖ͪΜͱ͓ۚΛ͔͚ΒΕΔͳΒ(PPEw"84্ʹࣗಈͰ,4Λઃஔw$PSF04νʔϜ͕ϝϯςwઃఆมߋɺΠϯελϯεՃɺߋ৽ίϚϯυҰൃwNMBSHFYΈ͍ͨͳߏ͕ਪ
Ξϯνύλʔϯ͋Δఔͷن͕ແ͍ͱ,4ମແ͍ɻ
ݸਓత͓קΊ%PDLFS$MPVEͷ4XBSN.PEF༷ࢠݟ(,&(PPHMF$POUBJOFS&OHJOF
όονδϣϒ࣮ߦڥຖʹιϦϡʔγϣϯ͕ҟͳΔ,VCFSOFUFT$SPO+PCT.FTPT$ISPOPT ະݕূ4XBSN.PEFແ
࣮ߦڥඇґଘͷδϣϒDSPOઐ༻ίϯςφ͔ΒXFCIPPLΛୟͪ͘ΐͬͱ໘͚ͩͲɺ࣮ߦڥʹࠨӈ͞Εͳ͍
$*CI Engine ComposeCircle CI 1.09(1.12)ࣗྗಋೖTravis CI 1.12.3 ࣗྗಋೖCodeship 17.3 ࠷৽Docker-Cloud 17.3 ࠷৽Shippable 1.09(beta 1.10)ࣗྗಋೖπʔϧຖʹରԠঢ়گϚνϚνhttps://speakerdeck.com/hanhan1978/sok-dockerwoshi-tutaphpapurikai-fa-tocinituite
Ξϯνύλʔϯ$*ɺޙͰઃఆ͢Ε͍͍DPNQPTFͷίϚϯυ͕Ұ෦ඇରԠͩͬͨΓಋೖࢥ͍௨Γʹ͍͔ͳ͍
$*ϑΝʔετ$*ͷߟ͑ํॳظஈ֊͔Β$*Λઃఆͯ͠ݒ೦Λ͏ʂଞͷਓͷઃఆΛਅࣅΔɾύΫΔ
͓קΊͷ$*5SBWJT$*%PDLFS$MPVE$PEFTIJQຊՈɻ(JUIVC࿈ܞͱ͔͍͢͝؆୯ɻ7FSTJPOਵ͕ૣ͍ɻίϛϡχςΟʔ͕׆ൃɻͳΜ͔ͩΜͩ௵͕͠ޮ͘
ϩάܥαʔόϩάΞϓϦέʔγϣϯϩάqVFOUEίϯςφΛར༻جຊతʹඪ४ग़ྗɻΤϥʔTMBDLɻͦͷଞඪ४ग़ྗɻEPDLFSMPHTίϚϯυͰࢀর͢ΔͷͰجຊඪ४ग़ྗ
ใͷΩϟονΞοϓTMBDLνϟϯωϧ.-ొ%PDLFSXFFLMZ%PDLFS ,4ڞʹଘࡏ
ใͷΩϟονΞοϓͦͷिͷͷهࣄ·ͱΊ
ͦΖͦΖ·ͱΊ·͢
νΣοΫϦετίϯςφϨδετϦΛ४උϦϙδτϦɺ̍ΞϓϦɺ%PDLFSpMFىಈίϚϯυͰΰχϣΰχϣېࢭίϯςφͷ࣮ߦڥબఆόονॲཧͷํܾࣜఆ$*πʔϧͷબఆઃఆϩάऩूઃఆΞϓϦέʔγϣϯͷΤϥʔ௨ϦιʔεͷϞχλϦϯά
·ͩ·ͩམͱ݀͠ଟ͍
ͰࢥͬͨΑΓશવ҆ఆͯ͠·͢ʂ
ͦΖͦΖࢼ࣌͠Ͱ͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠