Slide 1

Slide 1 text

DockerͰ࡞ΔPHP։ൃ؀ڥ
 ʢೖ໳ฤʣ 
 തଟTECHक़ Vol.55 2018.09

Slide 2

Slide 2 text

About Me ໊લɿ໺ౡོʢͷ͡·͔ͨ͠ʣ ॴଐɿΠϥεςΟοΫίϯαϧλϯπגࣜձࣾ
 IUUQTFMBTUJDDPOTVMUBOUTDPNʲٻਓதʂʳ
 ‣ CMPHIUUQTQIQUJQTDPN ‣ (JUIVC5XJUUFSOPKJNBHF

Slide 3

Slide 3 text

࿩͢͜ͱ ‣ 1)1ΞϓϦέʔγϣϯͷ։ൃ؀ڥ͋Ε͜Ε ‣ %PDLFSͱ͸ ‣ %PDLFS؀ڥͷߏஙํ๏ ‣ )FMMP1)1PO%PDLFS ‣ %PDLFS$PNQPTFͰ։ൃ؀ڥΛͭ͘Δ

Slide 4

Slide 4 text

PHP։ൃ؀ڥ͋Ε͜Ε

Slide 5

Slide 5 text

डୗ։ൃͰͷPHP։ൃ؀ڥ ‣ डୗ։ൃʹ͓͍ͯ͸Ҋ݅͝ͱʹ࢖༻Ͱ͖Δ1)1όʔδϣ ϯ͕ҟͳΔ ‣ ։ൃϚγϯʹ͸Ҋ݅͝ͱʹຊ൪؀ڥʹԠͨ͡όʔδϣ ϯͷ։ൃ؀ڥΛ༻ҙ͢Δ

Slide 6

Slide 6 text

डୗ։ൃͰͷPHP։ൃ؀ڥ ‣ ։ൃ؀ڥͷόʔδϣϯ͕ຊ൪؀ڥͷόʔδϣϯ͕ҟͳ Δͱ ݹ͍όʔδϣϯͰར༻Ͱ͖ͳ͍จ๏ؔ਺Λ࢖༻ͯ͠͠·͏ όʔδϣϯʹΑͬͯڍಈͷมΘͬͨؔ਺Λ࢖༻ͯ͠͠·͏ ʮ։ൃ؀ڥͰ͸ಈ͍͍ͯͨͷʹຊ൪؀ڥͰ͸ಈ͔ͳ͍ʯ

Slide 7

Slide 7 text

डୗ։ൃͰͷPHP։ൃ؀ڥ ʮ։ൃ؀ڥͰ͸ಈ͍͍ͯͨͷʹຊ൪؀ڥͰ͸ಈ͔ͳ͍ʯ Λආ͚ΔͨΊʹ ຊ൪؀ڥʹ͍ۙ؀ڥΛ։ൃ؀ڥͱͯ͠ར༻͢Δ Ҋ݅͝ͱʹ։ൃ؀ڥΛ੾Γ෼͚ͯ࡞੒͢Δ ෳ਺ਓͰ։ൃ͢Δ৔߹͸ಉ͡։ൃ؀ڥΛఏڙ͢Δ

Slide 8

Slide 8 text

ෳ਺όʔδϣϯͷ؀ڥΛ
 ߏங͢ΔͨΊͷπʔϧ

Slide 9

Slide 9 text

phpenv + php-build ‣ ϩʔΧϧϚγϯ্ͷQIQόʔδϣϯͷ੾ସ͑ ‣ ϩʔΧϧͰDPNQPTFS΍QIQVOJUΛ࣮ߦ͢Δ࣌ʹ࢖༻ σΟϨΫτϦ͝ͱʹόʔδϣϯΛઃఆɾ੾ସ͑Ͱ͖Δ ‣ QIQCVJMEͰ೚ҙͷόʔδϣϯͷ1)1ΛΠϯετʔϧͰ͖Δ QIQCVJME͸ιʔείʔυ͔ΒϏϧυ͢ΔͷͰ͕͔͔࣌ؒΔ ґଘϥΠϒϥϦͷΞοϓσʔτͰϦϯΫ͕੾Εͨ৔߹ͳͲ͸ ࠶Ϗϧυʜ

Slide 10

Slide 10 text

Vagrant / VirtualBox ‣ Ҋ݅ຖʹԾ૝ϚγϯΛߏஙͯ͠։ൃ؀ڥͱ͢Δ ຊ൪؀ڥͱ΄΅ಉҰͷ؀ڥΛߏஙՄೳ ‣ σΟϨΫτϦߏ੒ɺϛυϧ΢ΣΞΛؚΊͯಉҰԽͰ͖Δ Ծ૝ϚγϯͳͷͰىಈʹগʑ͕͔͔࣌ؒΔ Ծ૝Ϛγϯ͸04Λؙ͝ͱؚΉͷͰσΟεΫ༰ྔΛଟ͘ফඅ σΟεΫΠϝʔδ͕େ͖͍ͷͰ։ൃ؀ڥͷڞ༗͕͍ͨ΁Μ

Slide 11

Slide 11 text

Docker ‣ Ҋ݅ຖʹEPDLFSNBDIJOFͰԾ૝ϚγϯΛߏங ‣ Ծ૝ϚγϯͷதͰ%PDLFSίϯςφΛىಈͯ͠։ൃ؀ڥΛߏங 7BHSBOUʹൺ΂04Λؚ·ͳ͍෼σΟεΫ༰ྔΛফඅ͠ͳ͍ ։ൃ؀ڥͷڞ༗͸%PDLFSΠϝʔδΛ഑෍͢Ε͹͍͍ ։ൃʹ࢖༻ͨ͠ίϯςφΛຊ൪؀ڥͰ࢖༻͢Δ͜ͱ΋Մೳ

Slide 12

Slide 12 text

ͱ͸

Slide 13

Slide 13 text

‣ ίϯςφܕͷԾ૝؀ڥΛ࡞੒ɺ഑෍ɺ࣮ߦ͢ΔͨΊͷ ϓϥοτϑΥʔϜ ‣ -JOVYΧʔωϧ͕ݩʑ͍࣋ͬͯΔػೳΛ࢖ͬͯɺ࣮ߦ؀ ڥΛଞͷϓϩηε͔Βִ཭͠ɺͦͷதͰΞϓϦέʔγϣ ϯΛಈ࡞ͤ͞Δ ‣ ैདྷͷԾ૝Խٕज़ʢ)ZQFS7 7JSUVBM#PY౳ʣͱൺ΂Ϧ ιʔεͷফඅ΍Φʔόʔϔου͕গͳ͍

Slide 14

Slide 14 text

ϋʔυ΢ΣΞ ϗετ04 Ծ૝Խιϑτ ήετ04 ϛυϧ΢ΣΞ ΞϓϦ ήετ04 ϛυϧ΢ΣΞ ΞϓϦ ϋʔυ΢ΣΞ ϗετ04 %PDLFS&OHJOF Ծ૝Ϛγϯ ίϯςφ ϛυϧ΢ΣΞ ΞϓϦ ϛυϧ΢ΣΞ ΞϓϦ Ծ૝Ϛγϯ ίϯςφ Ծ૝ϚγϯͱDockerͷҧ͍

Slide 15

Slide 15 text

༻ޠ ‣ %PDLFSίϯςφ
 %PDLFS&OHJOF্Ͱىಈ͞ΕΔ࣮ߦ؀ڥ
 %PDLFSΠϝʔδ͔Βίϐʔͯ͠ੜ੒͢Δ ‣ %PDLFSΠϝʔδ
 ίϯςφͷݩͱͳΔϑΝΠϧγεςϜɻಡΈࠐΈઐ༻ ‣ %PDLFSpMF
 ΠϝʔδΛ࡞੒͢ΔͨΊͷखॱΛॻ͍ͨϑΝΠϧ

Slide 16

Slide 16 text

Dockerfile→Πϝʔδ→ίϯςφ %PDLFSpMF %PDLFS
 Πϝʔδ %PDLFS
 ίϯςφ EPDLFSCVJME EPDLFSSVO

Slide 17

Slide 17 text

DockerΠϝʔδΛऔಘ͢Δ %PDLFS
 Πϝʔδ %PDLFS
 ίϯςφ EPDLFSQVMM EPDLFSSVO ΠϝʔδϨδετϦ

Slide 18

Slide 18 text

Docker؀ڥͷߏங

Slide 19

Slide 19 text

Windows/MacͰͷDocker؀ڥ ‣ %PDLFS%FTLUPQ %PDLFSGPS8JOEPXT.BD 
 IUUQTXXXEPDLFSDPNQSPEVDUTEPDLFSEFTLUPQ ‣%PDLFS.BDIJOF
 IUUQTEPDTEPDLFSDPNNBDIJOF

Slide 20

Slide 20 text

Docker for Windows/Mac ͱ Docker Machine ͷҧ͍ ϋʔυ΢ΣΞ 8JOEPXTNBD04 )ZQFS7YIZWF ϋʔυ΢ΣΞ ϗετ04 %PDLFS&OHJOF %PDLFSGPS8JOEPXT.BD %PDLFS.BDIJOF ϛυϧ΢ΣΞ ΞϓϦ ϛυϧ΢ΣΞ ΞϓϦ Ծ૝Խιϑτ ήετ04 %PDLFS&OHJOF ϛυϧ΢ΣΞ ΞϓϦ ϛυϧ΢ΣΞ ΞϓϦ

Slide 21

Slide 21 text

Docker Machineͷεεϝ Ҋ݅͝ͱʹԾ૝ϚγϯΛ࡞੒͢Ε͹ɺෳ਺Ҋ݅ͷίϯςφΛಉ࣌ʹ
 ্ཱͪ͛ͯ΋ϙʔτͷ͔ͿΓ͕ͳ͍ Ծ૝Ϛγϯຖʹ*1͕ৼΒΕΔͷͰIPTUT౳Ͱ໊લղܾ͕Մೳ Ծ૝Ϛγϯ෼ͷσΟεΫ༰ྔΛফඅͯ͠͠·͏ ϗετϚγϯʹϙʔτϚοϐϯά͢ΔΘ͚Ͱ͸ͳ͍ͷͰɺ
 ଞͷϚγϯ͔Β͸ΞΫηεͰ͖ͳ͍
 ˠϗετϚγϯʹ8FCαʔόΛཱ͔ͯͯͦ͜ΒϓϩΩγͰԾ૝Ϛγϯʹඈ͹͢ํ๏ͰΞΫηεՄೳ

Slide 22

Slide 22 text

DockerͷΠϯετʔϧ

Slide 23

Slide 23 text

Docker DesktopΛΠϯετʔϧ ‣ IUUQTXXXEPDLFSDPNQSPEVDUTEPDLFSEFTLUPQ

Slide 24

Slide 24 text

Docker DesktopΛΠϯετʔϧ

Slide 25

Slide 25 text

Docker DesktopΛΠϯετʔϧ

Slide 26

Slide 26 text

Docker DesktopΛΠϯετʔϧ ্2ͭͷνΣοΫϘοΫε͸ඞਢ ར༻ن໿ͱϓϥΠόγʔϙϦγʔ΁ͷಉҙ ొ࿥֬ೝͷϝʔϧ͕ඈΜͰ͘ΔͷͰ ϝʔϧ಺ͷϦϯΫΛΫϦοΫͯ͠ొ࿥׬ྃ

Slide 27

Slide 27 text

Docker DesktopΛΠϯετʔϧ

Slide 28

Slide 28 text

Docker DesktopΛΠϯετʔϧ

Slide 29

Slide 29 text

Docker DesktopΛΠϯετʔϧ ‣ Πϯετʔϧޙɺίϯιʔϧ͔ΒEPDLFSWFSTJPO ͱଧͬͯىಈΛ֬ೝ $ docker version Client: Version: 18.06.1-ce API version: 1.38 Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:21:31 2018 OS/Arch: darwin/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:29:02 2018 OS/Arch: linux/amd64 Experimental: true ClientͱServer྆ํͷόʔδϣϯ͕ දࣔ͞Ε͍ͯΕ͹OK

Slide 30

Slide 30 text

Hello PHP on Docker

Slide 31

Slide 31 text

PHPެࣜΠϝʔδ ‣ %PDLFS)VCIUUQTIVCEPDLFSDPN ‣ %PDLFSΠϝʔδͷϨϙδτϦ
 ‣ 1)1ެࣜͷΠϝʔδ
 IUUQTIVCEPDLFSDPN@QIQ ‣ d CFUB ·Ͱ͋Δ

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

PHPެࣜΠϝʔδ ‣ 1)1ͷΠϝʔδʹ͸৭ʑͳछྨ͕͋Δ ‣ DMJ ‣ GQN ‣ BQBDIF ‣ DMJBMQJOF ‣ GQNBMQJOF ‣ DMJBMQJOF ࠷ॳͷ਺ࣈ͸1)1όʔδϣϯ DMJ$-* ίϚϯυϥΠϯ ൛ GQN1)1'1.൛ BQBDIF"QBDIFIUUQEಉࠝ൛ [UT;54ʢ;FOE5ISFBE4BGFUZʣରԠ൛ ௨ৗ͸%FCJBOϕʔε BMQJOF͕ͭ͘ͱΑΓܰྔͳ"MQJOF-JOVYϕʔε

Slide 34

Slide 34 text

σϞ

Slide 35

Slide 35 text

DockerΠϝʔδΛpull͢Δ ‣ ࠓճ͸BQBDIFΛ࢖༻ͯ͠ΈΔ ‣docker pull php:7.2-apache ‣ docker imagesͰखݩͷΠϝʔδͷϦετΛ֬ೝ

Slide 36

Slide 36 text

hello.phpΛ༻ҙ͢Δ

Hello PHP = $version ?> on = $sapi ?>

Slide 37

Slide 37 text

PHPίϯςφΛىಈ͢Δ docker run \ --rm \ -p 8000:80 \ -v "$PWD":/var/www/html \ php:7.2-apache ˡίϯςφΛىಈ ˡίϯςφΛऴྃͨ͠Β࡟আ͢Δ ˡίϯςφͷϙʔτΛϗετͷʹׂΓ౰ͯ ˡݱࡏͷσΟϨΫτϦΛWBSXXXIUNMʹϚ΢ϯτ ˡQIQBQBDIFͷΠϝʔδ͔Β࣮ߦ IUUQMPDBMIPTUͰΞΫηεͰ͖Δ

Slide 38

Slide 38 text

CLIͰPHPΛىಈ͢Δ docker run \ --rm \ -v "$PWD":/var/www/html \ php:7.2-apache \ php hello.php ˡίϯςφΛىಈ ˡίϯςφΛऴྃͨ͠Β࡟আ͢Δ ˡݱࡏͷσΟϨΫτϦΛWBSXXXIUNMʹϚ΢ϯτ ˡQIQBQBDIFͷΠϝʔδ͔Β࣮ߦ ˡQIQίϚϯυͰIFMMPQIQΛ࣮ߦ

Slide 39

Slide 39 text

DockerͰ͓͖͍֮͑ͯͨίϚϯυ ‣ EPDLFSQVMM ‣ EPDLFSSVO ‣ EPDLFSQTEPDLFSQTB ‣ EPDLFSMPHT ‣ EPDLFSJNBHFT

Slide 40

Slide 40 text

ΧελϜPHPΠϝʔδΛ࡞੒

Slide 41

Slide 41 text

ެࣜΠϝʔδͰ͸଍Γͳ͍ ‣ ެࣜΠϝʔδʹσϑΥϧτͰೖ͍ͬͯΔ1)1֦ுͰ͸ ࣮ࡍͷ։ൃ͸Ͱ͖ͳ͍ ‣ QEP@NZTRM΍(% 9EFCVHͳͲΑ͘࢖͏֦ு͸ೖͬ ͍ͯͳ͍ ඞཁͳ֦ுΛΠϯετʔϧͨ͠
 %PDLFSΠϝʔδΛ࡞Δ

Slide 42

Slide 42 text

DockerfileͰ࢖͑Δαϙʔτπʔϧ ‣ 1)1ίΞʹؚ·ΕΔ֦ுΛΠϯετʔϧ͢Δ ‣ EPDLFSQIQFYUJOTUBMM ‣ EPDLFSQIQFYUDPOpHVSF
 ‣ QFDM֦ுΛΠϯετʔϧ͢Δ ‣ EPDLFSQIQFYUFOBCMF

Slide 43

Slide 43 text

GD֦ுΛΠϯετʔϧ FROM php:7.2-apache RUN apt-get update \ && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd \ --with-freetype-dir=/usr/include/ \ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install gd ˡQIQBQBDIFΛϕʔεʹ͢Δ ˡBQUύοέʔδΞοϓσʔτ ˡ(%ʹඞཁͳύοέʔδΛΠϯετʔϧ ˡ(%֦ுͷϏϧυΦϓγϣϯΛࢦఆ ˡ(%֦ுΛΠϯετʔϧ

Slide 44

Slide 44 text

Docker ComposeͰ
 ։ൃ؀ڥΛߏங͢Δ

Slide 45

Slide 45 text

Docker Composeͱ͸ ‣ ෳ਺ͷίϯςφ͔Β੒ΔαʔϏεͷߏ੒ɾؔ࿈Λ
 ϑΝΠϧͰఆٛ͠؅ཧΛ༰қʹ͢Δπʔϧ ‣ ֤αʔϏείϯςφͷఆٛͳͲهड़ͨ͠
 EPDLFSDPNQPTFZNMϑΝΠϧΛ࡞੒͢Δ ‣ EPDLFSDPNQPTFίϚϯυΛ࢖ͬͯαʔϏε؅ཧ EPDLFSίϚϯυͷΈͰෳ਺ίϯςφΛ ಈ͔͢ͷ͸ਏ͍ͷͰඞਢʂ

Slide 46

Slide 46 text

WordPressΛDockerͰಈ͔͢ ‣ 1)1"QBDIFͱ.Z42-ͷ૊Έ߹Θͤ ‣ 1)1͸ΧελϜΠϝʔδɺ.Z42-͸ެࣜΠϝʔδΛ ࢖༻͢Δ ‣ ࠓճ͸%PDLFSGPS.BD্Ͱಈ͔͢ "QBDIF1)1 .Z42- 8PSE1SFTT 8000:80 13306:3306

Slide 47

Slide 47 text

WordPressΛDockerͰಈ͔͢ ‣ 1)1ΧελϜΠϝʔδͷϙΠϯτ ‣ 8PSE1SFTT͸.Z42-֦ுPS.Z42-J֦ுΛ࢖ͬͯ .Z42-ͱ઀ଓ͢Δ ‣ ը૾αϜωΠϧͷ࡞੒ʹ(%·ͨ͸JNBHJDL͕ඞཁ ͜ΕΒͷ֦ு͸1)1ެࣜΠϝʔδʹ͸ ؚ·Εͳ͍ͷͰཁΠϯετʔϧ

Slide 48

Slide 48 text

σϞ

Slide 49

Slide 49 text

·ͱΊ ։ൃ؀ڥ͸ͳΔ΂͘ຊ൪؀ڥͱಉ͡ʹ͠Α͏ ‣ νʔϜͰ։ൃ͢ΔͳΒ։ൃ؀ڥΛڞ༗Ͱ͖ΔΑ͏ʹ %PDLFS͸։ൃ؀ڥΛ࡞Δɾڞ༗͢Δͷʹศར ‣ͦͷ··ຊ൪؀ڥ΁Ͱར༻͢Δ͜ͱ΋Մೳ %PDLFS$PNQPTFΛ࢖ͬͯߏ੒Λఆٛ͠Α͏

Slide 50

Slide 50 text

DockerͷυΩϡϝϯτ ‣%PDLFSެࣜ
 IUUQTEPDTEPDLFSDPN ‣༗ࢤͷํʹΑΔ೔ຊޠ༁
 IUUQEPDTEPDLFSKQ
 ˞Wϕʔεʢ೥લʣͷ΋ͷͳͷͰ஫ҙ

Slide 51

Slide 51 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ Ξϯέʔτͷ͝ճ౴ΑΖ͓͘͠ئ͍͠·͢