Slide 1

Slide 1 text

dockerͰࣾ಺֎޲͚ͷ؀ڥΛ੔͑ͨ࿩ 3ZP5PNJEPLPSP !IBOIBO PHPΧϯϑΝϨϯε෱Ԭ

Slide 2

Slide 2 text

@hanhan1978 Twitter Ryo Tomidokoro Name Web App Engineer Job "CPVU.F

Slide 3

Slide 3 text

"HFOEB ෼ͰdockerΛ෮श ׆༻ྫɾߏ੒ྫ ௕ॴɾ୹ॴ docker࠾༻͢Δ ಋೖཧ༝

Slide 4

Slide 4 text

෼ͰEPDLFSΛ෮श Docker Inc ͷιϑτ΢ΣΞ ܰྔͳίϯςφԾ૝Խ ϋΠύʔόΠβʔܕͰ͸ͳ͍ɻ ίϯςφ͸ϗετOS಺ͷִ཭͞Εͨ؀ڥͰಈ࡞ ֤ίϯςφ͸ϗετOSͷࢿݯΛར༻͢Δ

Slide 5

Slide 5 text

෼ͰEPDLFSΛ෮श docker͸Կ͕خ͍͠ͷʁ ίϯςφΛߏஙɾ؅ཧ͢ΔͨΊͷΠϯλϑΣʔεΛఏڙ ߏங಺༰͸Dockerfileͱ͍͏ܗͰίʔυԽ dockerͷίϯςφͷϨΠϠʔߏ଄ %PDLFSpMFͷίʔυͷߦߦ͕ϕʔεΠϝʔ δͷ্ʹ૚ͱͯ͠ੵΈॏͳ͍ͬͯ͘ɻ ϕʔεΠϝʔδ͔ΒͷϨΠϠʔશମΛؚΊͯɺ ίϯςφͷʮΠϝʔδʯͱݺͿɻ EPDLFSެࣜΑΓҾ༻

Slide 6

Slide 6 text

෼ͰEPDLFSΛ෮श Dockerfileͷத਎ ίϯςφΠϝʔδͷߏஙखॱ͸ େ·͔ʹ෼͚ΔͱҎԼͷ̏ͭ 1 ϕʔεΠϝʔδࢦఆ Πϝʔδߏங༻ͷίϚϯυ ࿐ग़͢Δportͱ࣮ߦίϚϯυ 2 3

Slide 7

Slide 7 text

෼ͰEPDLFSΛ෮श Dockerfileͷ࣮ྫ FROM php:7.0-apache Maintainer hanhan1978 RUN docker-php-ext-install -j$(nproc) mysql RUN a2enmod rewrite EXPOSE 8080 CMD [“/usr/sbin/httpd”, “-D”, “FOREGROUND”] 1 2 3

Slide 8

Slide 8 text

෼ͰEPDLFSΛ෮श ϕʔεΠϝʔδͷऔಘ FROM php:7.0-apache Maintainer hanhan1978 1 phpͷόʔδϣϯ7(Apache)Πϝʔδ ίϯςφͷ؅ཧऀ͸ࣗ෼ͷDocker ID

Slide 9

Slide 9 text

෼ͰEPDLFSΛ෮श ϕʔεΠϝʔδ͸Ͳ͔͜Βʁ σϑΥϧτ͸ެࣜϨϙδτϦ privateϦϙδτϦ͸༗ྉ EPDLFSIVC EPDLFSSFHJTUSZ OSSͷdocker image ετΞ ࣗલͰ༻ҙ ઐ೚ͷΠϯϑϥ୲౰͕͍ͳ͍ձࣾͷ৔߹ ϝϯς΍ೝূ͕໘౗ͳͷͰ΍Ίͨํ͕ແ೉

Slide 10

Slide 10 text

෼ͰEPDLFSΛ෮श Πϝʔδߏங༻ͷίϚϯυ RUN docker-php-ext-install -j$(nproc) mysql RUN a2enmod rewrite 2 • ίϚϯυΛ࣮ߦ͢ΔΑ͏ͳΠϝʔδͰཏྻ • ϩʔΧϧʹ༻ҙͨ͠ϑΝΠϧΛΠϝʔδʹCOPYͱ͔΋Մ • ৄ͘͠͸ެࣜυΩϡϝϯτࢀর

Slide 11

Slide 11 text

FYQPTFͨ͠ϙʔτ͸ɺίϯςφؒͰެ։ ෼ͰEPDLFSΛ෮श ࿐ग़͢Δportͱ࣮ߦίϚϯυ EXPOSE 8080 CMD [“/usr/sbin/httpd”, “-D”, “FOREGROUND”] 3 • dockerͷωοτϫʔΫ಺Ͱ8080൪Λެ։ • CMDͰࢦఆͨ͠ϑΥΞάϥ΢ϯυͷίϚϯυΛ࣮ߦ

Slide 12

Slide 12 text

෼ͰEPDLFSΛ෮श ίϯςφΛϏϧυ $ docker build -t [Πϝʔδ໊] [Dockerfileͷ͋ΔPATH] docker-hubͷΠϝʔδ໋໊نଇʹै͍·͠ΐ͏ [Ϣʔβ໊]/[Πϝʔδ໊] ྫ) hanhan1978/php7

Slide 13

Slide 13 text

෼ͰEPDLFSΛ෮श ίϯςφΛ࣮ߦ $ docker run -d -p 8080:80 [Πϝʔδ໊] ίϯςφͰexpose͞Εͨ80൪portΛ ϗετOSͷ8080ʹඥ෇͚ جຊ͸ίϨ͚ͩʂ

Slide 14

Slide 14 text

෼ͰEPDLFSΛ෮श γϯϓϧͳdockerߏ੒ਤ EPDLFSIVC ֤ίϯςφ͸EPDLFSIVC͔ΒϕʔεΠϝʔδΛQVMM %PDLFSpMFͷهड़ʹԊͬͯɺίϯςφΛCVJME

Slide 15

Slide 15 text

"HFOEB ಋೖཧ༝ ׆༻ྫɾߏ੒ྫ ௕ॴɾ୹ॴ docker࠾༻͢Δ ෼ͰdockerΛ෮श

Slide 16

Slide 16 text

ಋೖཧ༝ ձࣾͰ΍͍ͬͯΔۀ຿ w খʙதن໛ͷडୗ։ൃ w 6*σβΠϯϑϩϯτΤϯυ։ൃ͕ϝΠϯ w αʔϏε։ൃ΋༗Γ w 4BB4Ͱେମ͏·͘΍ͬͯΔ

Slide 17

Slide 17 text

ಋೖཧ༝ ๊͍͑ͯͨ໰୊఺ w ϚʔΫΞοϓ ੩త)5.- ͷ֬ೝ؀ڥ͕ແ͔ͬͨɻ w ࢼͯ͠Έ͍ͨ044Λࢼ͢؀ڥ͕ແ͍ɻ w #PUͱ͔Λৗறͤ͞Δ-BCతͳ؀ڥ͕ແ͍ɻ

Slide 18

Slide 18 text

ಋೖཧ༝ ݕ౼ͨ͠αʔϏε ࣾ಺ʹैྔ՝ۚͷߴֹ੥ٻτϥ΢Ϛ͕͋ΔΒ͘͠ ࠜڧ͍ෆ৴ײ͕ɾɾɾ AWS or GCP Heroku OSSͰHeroku͓ࢼ͠Λఏڙ͍ͯ͠ͳ͍΋ͷ΋ଟ͔ͬͨ ࣗ༝౓͕௿͍ͷͰ͸ͱײͨ͡(ޙʑޙչ͕ͨ͠ɾɾɾ) SakuraͷVPS ఆֹͰ࢖͑Δ͠ɺ޷͖ͳΑ͏ʹ࢖͑ͦ͏ͩɾɾɾ

Slide 19

Slide 19 text

ಋೖཧ༝ ఆֹ714 ϝϯςָ͕ ߴՄ༻ੑ Ϟμϯ ͱ͍͏Θ͚Ͱ

Slide 20

Slide 20 text

"HFOEB ׆༻ྫɾߏ੒ྫ ಋೖཧ༝ ௕ॴɾ୹ॴ docker࠾༻͢Δ ෼ͰdockerΛ෮श

Slide 21

Slide 21 text

׆༻ྫɾߏ੒ྫ Overview DPOUBJOFS DPOUBJOFS DPOUBJOFS DPOUBJOFS ୯ҰͷϗετͷΈར༻ ίϯςφؒϦϯΫ΍portͷࢦఆ͸docker-compose kubernatis΋TXBSN΋ඞཁͳ͠ʂ

Slide 22

Slide 22 text

׆༻ྫɾߏ੒ྫ docker-compose ίϯςφ࣮ߦ࣌ͷઃఆ͸ZNMͰҰݩ؅ཧ mysql: image: mysql volumes: - /host/mysql:/var/lib/mysql restart: always gyazo: build: docker-files/gyazo environment: - SRC_PATH=/hoge/fuga restart: always

Slide 23

Slide 23 text

׆༻ྫɾߏ੒ྫ 1. ੩తαΠτͷ֬ೝ؀ڥ DPOUBJOFS git pushͰCI΁௨஌ docker-compose build [container] ϑϩϯτΤϯυΤϯδχΞ͸ɺΫϥΠΞϯτ΁ͷαΠτߋ৽ͷڞ༗Λ ҙࣝ͠ͳͯ͘Α͘ͳͬͨɻ ͱʹ͔͘ૣ͘ίʔυΛॻ͍ͯɺ164)

Slide 24

Slide 24 text

׆༻ྫɾߏ੒ྫ 2. OSS͓ࢼ͠؀ڥ docker-compose up -d opengrok opengrok: image: itszero/opengrok volumes: - /hoge/fuga:/src ports: - “3001:8080" DPNQPTFZNMʹઃఆΛ௥Ճͯ͠UP͢Δ͚ͩ

Slide 25

Slide 25 text

׆༻ྫɾߏ੒ྫ 3. ։ൃ -> εςʔδ΁൓ө ։ൃ DPOUBJOFS DPOUBJOFS DPOUBJOFS DPOUBJOFS ʹEPDLFSGPSNBD CFUB ΋ग़ͨͷͰɺͦΕͰ΋0, εςʔδ ։ൃ࣌ͷߏ੒Ͱͦͷ··UPͰ͖Δʂॴཁ࣌ؒ෼

Slide 26

Slide 26 text

"HFOEB ௕ॴɾ୹ॴ ಋೖཧ༝ ׆༻ྫɾߏ੒ྫ docker࠾༻͢Δ ෼ͰdockerΛ෮श

Slide 27

Slide 27 text

௕ॴɾ୹ॴ ྑ͔ͬͨ͜ͱ ϗετ͸গ਺ͳͷͰϝϯςָ͕ ΞϓϦͷ͓ࢼ͠ར༻͸ϚδͰָ ґଘؔ܎͸ίϯςφଆͰղܾ͞Ε͍ͯΔ gitlab, redmine => Έͳ͞·΋Πϯετʔϧ࣌ͷਏ͞ʹ͕֮͑͋Δ͔ͱɾɾɾ VMΛෳ਺্ཱ͍ͪ͛ͯͨ࣌ʹൺ΂Δͱஈҧ͍ => ೴͕֮͑ͯΒΕΔݸ਺ ੬ऑੑରԠ => ίϯςφ࠶Ϗϧυ & ϗεταʔόʹରԠͰOK

Slide 28

Slide 28 text

௕ॴɾ୹ॴ ྑ͔ͬͨ͜ͱ dockerೲ඼ͱ͍͏ϦΫΤετ ސ٬ଆ͕dockerΠϯϑϥΛ͍࣋ͬͯͨ => docker؀ڥͳΜͰ͕͢ɾɾɾʹ༨༟ͰରԠ ͜ͷઌ૿͑ͯ͘Δͱ༧૝͞Ε·͢ ʘ(^o^)ʗ

Slide 29

Slide 29 text

௕ॴɾ୹ॴ ѱ͔ͬͨ͜ͱ ਓࡐϘτϧωοΫ ੩తαΠτߏஙͷίϯςφ࡞੒ => ٸ͍Ͱ΋30෼ ϑϩϯτΤϯυΤϯδχΞͷΈͰ͸׬݁Ͱ͖ͳ͍ => ݁ہɺherokuΛ࢖͏͜ͱʹͨ͠ docker-machineͷͭΒΈ VirtualBoxͰಈ࡞͢ΔdockerͳͷͰɺϗετϚγʔϯଆͱͷ௨৴ ΍ϑΝΠϧڞ༗ͳͲ͕໘౗ ɹ=> docker for mac, windows͕ٹੈओ͔΋

Slide 30

Slide 30 text

௕ॴɾ୹ॴ ѱ͔ͬͨ͜ͱ disk༰ྔ VPSͱ͔݁ߏdisk༰ྔগͳ͍ܖ໿ͩͱਏ͘ͳΔ ΠϝʔδϨΠϠʔ͕δϫδϫͱѹഭ => 20ʙ30ఔ౓ͷίϯςφΠϝʔδͰ50G͘Β͍͸ݟͨ΄͏͕ྑ ͍͔΋ɻ

Slide 31

Slide 31 text

௕ॴɾ୹ॴ ݸਓతͳײ૝ w %PDLFSpMFͬͯɺ͋Μ·Γے͕ΑΖ͘͠ࢥ͑ͳ͍ɻ΄΅TIFMM w EPDLFSGPSNBD XJOEPXT͸ظ଴Ͱ͖Δʂʂ w 044ͷ͓ࢼ͠༻్ͱͯ͠͸ɺ࠷ڧͷ؀ڥɹେ఍ͷ΋ͷ͸EPDLFS IVCʹ͋Δ w ੈͷதʹ͍͍͚ͭͯͯΔײ஍ຯͰ͕͢େࣄ

Slide 32

Slide 32 text

"HFOEB docker࠾༻͢Δ ಋೖཧ༝ ׆༻ྫɾߏ੒ྫ ௕ॴɾ୹ॴ ෼ͰdockerΛ෮श

Slide 33

Slide 33 text

docker࠾༻͢Δʁ ೦಄ʹ͓͍͓ͯ͘͜ͱ w EPDLFSͷݪཧΛཧղ͠ɺ؅ཧՄೳͳਓࡐΛਓ͸ଗ͍͑ͨɻ w શ෦ΛEPDLFSͰ΍ΕΔͱ͍͏ࢥߟఀࢭ͸/(Ϛωʔδυɾ αʔϏεͰ΋ແྉ࿮ͱ͔͋Δ͠ɺόοΫΤϯυΤϯδχΞෆཁ ͷιϦϡʔγϣϯΛୈҰʹߟ͑Δͷେࣄ w ίϯςφࣗମΛඞཁͱ͢ΔαʔϏε։ൃͰ͋Ε͹ɺEPDLFSΛ ࢖͏ͷ͸޻਺࡟ݮʹͳͬͯྑͦ͞͏ɻ

Slide 34

Slide 34 text

docker࢖ͬͯΈΔʁ ৭ʑݒ೦఺͋͛·͕ͨ͠ɾɾɾ ͳΜ͔ͩΜͩݴͬͯɺdockerָ͍ͬ͢͠ ͪΐͬͱ͘Β͍ᷖᮣͳײ͕͡ͳ͍ͱɺ৽نಋೖͳΜͯͰ͖ͳ͍YO

Slide 35

Slide 35 text

͓·͚ dockerͰPHP؀ڥ EPDLFSIVCʹ1)1ͷެࣜΠϝʔδ༗Γ w ʙͷOUTͱ[UT w QIQGQN BQBDIF DMJ w BMQJOFͱॻ͔Ε͍ͯΔͷ͸ܰྔΠϝʔδ

Slide 36

Slide 36 text

͓·͚ apacheͷ৔߹ Containers BQBDIF src w ެࣜΠϝʔδ͸QSFGPSLNPEQIQ w EPDVNFOU3PPUʹTSDΛಥͬࠐΉ͚ͩ

Slide 37

Slide 37 text

͓·͚ php-fpmͷ৔߹ Containers /HJOY src w /HJOY౳ͷ'BTU$(*ͷαʔόΛલஈʹઃஔ w QIQGQNͷ෦෼͸IIWNͱ͔ʹஔ׵Մೳ QIQGQN

Slide 38

Slide 38 text

"OZ2VFTUJPO ಋೖཧ༝ ׆༻ྫɾߏ੒ྫ ௕ॴɾ୹ॴ ෼ͰdockerΛ෮श docker࠾༻͢Δ