Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dockerで作るPHP開発環境(入門編)
Search
Takashi Nojima
September 12, 2018
Technology
3
1k
Dockerで作るPHP開発環境(入門編)
2018.09.12 博多TECH塾
デモ・サンプルコード
https://github.com/nojimage/hakata-tech-php-docker/tree/master/vol0
Takashi Nojima
September 12, 2018
Tweet
Share
More Decks by Takashi Nojima
See All by Takashi Nojima
Stripe決済対応 バリカートの紹介と本カートシステムでの Stripe連携の仕組み
nojimage
0
160
CakePHP3で時間を 扱いたかったお話 / Fukuoka.php 201904
nojimage
0
420
CakePHP3 Modelless Form
nojimage
3
2.9k
Codeceptionでテストをしよう
nojimage
0
1.7k
Other Decks in Technology
See All in Technology
CQRS/ESになぜアクターモデルが必要なのか
j5ik2o
0
250
ESXi のAIOps だ!2025冬
unnowataru
0
470
AWS re:Invent2025最新動向まとめ(NRIグループre:Cap 2025)
gamogamo
0
150
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
170
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
260
Agentic AIが変革するAWSの開発・運用・セキュリティ ~Frontier Agentsを試してみた~ / Agentic AI transforms AWS development, operations, and security I tried Frontier Agents
yuj1osm
0
200
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
290
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
2
660
人工知能のための哲学塾 ニューロフィロソフィ篇 第零夜 「ニューロフィロソフィとは何か?」
miyayou
0
320
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
65
Visualization
eitanlees
150
16k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
So, you think you're a good person
axbom
PRO
0
1.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
270
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Code Reviewing Like a Champion
maltzj
527
40k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
92
How to Talk to Developers About Accessibility
jct
1
94
Tell your own story through comics
letsgokoyo
0
770
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
0
990
Design in an AI World
tapps
0
110
Transcript
DockerͰ࡞ΔPHP։ൃڥ ʢೖฤʣ തଟTECHक़ Vol.55 2018.09
About Me ໊લɿౡོʢͷ͡·͔ͨ͠ʣ ॴଐɿΠϥεςΟοΫίϯαϧλϯπגࣜձࣾ IUUQTFMBTUJDDPOTVMUBOUTDPNʲٻਓதʂʳ ‣ CMPHIUUQTQIQUJQTDPN ‣ (JUIVC5XJUUFSOPKJNBHF
͢͜ͱ ‣ 1)1ΞϓϦέʔγϣϯͷ։ൃڥ͋Ε͜Ε ‣ %PDLFSͱ ‣ %PDLFSڥͷߏஙํ๏ ‣ )FMMP1)1PO%PDLFS ‣
%PDLFS$PNQPTFͰ։ൃڥΛͭ͘Δ
PHP։ൃڥ͋Ε͜Ε
डୗ։ൃͰͷPHP։ൃڥ ‣ डୗ։ൃʹ͓͍ͯҊ݅͝ͱʹ༻Ͱ͖Δ1)1όʔδϣ ϯ͕ҟͳΔ ‣ ։ൃϚγϯʹҊ݅͝ͱʹຊ൪ڥʹԠͨ͡όʔδϣ ϯͷ։ൃڥΛ༻ҙ͢Δ
डୗ։ൃͰͷPHP։ൃڥ ‣ ։ൃڥͷόʔδϣϯ͕ຊ൪ڥͷόʔδϣϯ͕ҟͳ Δͱ ݹ͍όʔδϣϯͰར༻Ͱ͖ͳ͍จ๏ؔΛ༻ͯ͠͠·͏ όʔδϣϯʹΑͬͯڍಈͷมΘͬͨؔΛ༻ͯ͠͠·͏ ʮ։ൃڥͰಈ͍͍ͯͨͷʹຊ൪ڥͰಈ͔ͳ͍ʯ
डୗ։ൃͰͷPHP։ൃڥ ʮ։ൃڥͰಈ͍͍ͯͨͷʹຊ൪ڥͰಈ͔ͳ͍ʯ Λආ͚ΔͨΊʹ ຊ൪ڥʹ͍ۙڥΛ։ൃڥͱͯ͠ར༻͢Δ Ҋ݅͝ͱʹ։ൃڥΛΓ͚ͯ࡞͢Δ ෳਓͰ։ൃ͢Δ߹ಉ͡։ൃڥΛఏڙ͢Δ
ෳόʔδϣϯͷڥΛ ߏங͢ΔͨΊͷπʔϧ
phpenv + php-build ‣ ϩʔΧϧϚγϯ্ͷQIQόʔδϣϯͷସ͑ ‣ ϩʔΧϧͰDPNQPTFSQIQVOJUΛ࣮ߦ͢Δ࣌ʹ༻ σΟϨΫτϦ͝ͱʹόʔδϣϯΛઃఆɾସ͑Ͱ͖Δ ‣ QIQCVJMEͰҙͷόʔδϣϯͷ1)1ΛΠϯετʔϧͰ͖Δ
QIQCVJMEιʔείʔυ͔ΒϏϧυ͢ΔͷͰ͕͔͔࣌ؒΔ ґଘϥΠϒϥϦͷΞοϓσʔτͰϦϯΫ͕Εͨ߹ͳͲ ࠶Ϗϧυʜ
Vagrant / VirtualBox ‣ Ҋ݅ຖʹԾϚγϯΛߏஙͯ͠։ൃڥͱ͢Δ ຊ൪ڥͱ΄΅ಉҰͷڥΛߏஙՄೳ ‣ σΟϨΫτϦߏɺϛυϧΣΞΛؚΊͯಉҰԽͰ͖Δ ԾϚγϯͳͷͰىಈʹগʑ͕͔͔࣌ؒΔ ԾϚγϯ04Λؙ͝ͱؚΉͷͰσΟεΫ༰ྔΛଟ͘ফඅ
σΟεΫΠϝʔδ͕େ͖͍ͷͰ։ൃڥͷڞ༗͕͍ͨΜ
Docker ‣ Ҋ݅ຖʹEPDLFSNBDIJOFͰԾϚγϯΛߏங ‣ ԾϚγϯͷதͰ%PDLFSίϯςφΛىಈͯ͠։ൃڥΛߏங 7BHSBOUʹൺ04Λؚ·ͳ͍σΟεΫ༰ྔΛফඅ͠ͳ͍ ։ൃڥͷڞ༗%PDLFSΠϝʔδΛ͢Ε͍͍ ։ൃʹ༻ͨ͠ίϯςφΛຊ൪ڥͰ༻͢Δ͜ͱՄೳ
ͱ
‣ ίϯςφܕͷԾڥΛ࡞ɺɺ࣮ߦ͢ΔͨΊͷ ϓϥοτϑΥʔϜ ‣ -JOVYΧʔωϧ͕ݩʑ͍࣋ͬͯΔػೳΛͬͯɺ࣮ߦ ڥΛଞͷϓϩηε͔Βִ͠ɺͦͷதͰΞϓϦέʔγϣ ϯΛಈ࡞ͤ͞Δ ‣ ैདྷͷԾԽٕज़ʢ)ZQFS7 7JSUVBM#PYʣͱൺϦ
ιʔεͷফඅΦʔόʔϔου͕গͳ͍
ϋʔυΣΞ ϗετ04 ԾԽιϑτ ήετ04 ϛυϧΣΞ ΞϓϦ ήετ04 ϛυϧΣΞ ΞϓϦ ϋʔυΣΞ
ϗετ04 %PDLFS&OHJOF ԾϚγϯ ίϯςφ ϛυϧΣΞ ΞϓϦ ϛυϧΣΞ ΞϓϦ ԾϚγϯ ίϯςφ ԾϚγϯͱDockerͷҧ͍
༻ޠ ‣ %PDLFSίϯςφ %PDLFS&OHJOF্Ͱىಈ͞ΕΔ࣮ߦڥ %PDLFSΠϝʔδ͔Βίϐʔͯ͠ੜ͢Δ ‣ %PDLFSΠϝʔδ ίϯςφͷݩͱͳΔϑΝΠϧγεςϜɻಡΈࠐΈઐ༻ ‣ %PDLFSpMF
ΠϝʔδΛ࡞͢ΔͨΊͷखॱΛॻ͍ͨϑΝΠϧ
Dockerfile→Πϝʔδ→ίϯςφ %PDLFSpMF %PDLFS Πϝʔδ %PDLFS ίϯςφ EPDLFSCVJME EPDLFSSVO
DockerΠϝʔδΛऔಘ͢Δ %PDLFS Πϝʔδ %PDLFS ίϯςφ EPDLFSQVMM EPDLFSSVO ΠϝʔδϨδετϦ
Dockerڥͷߏங
Windows/MacͰͷDockerڥ ‣ %PDLFS%FTLUPQ %PDLFSGPS8JOEPXT.BD IUUQTXXXEPDLFSDPNQSPEVDUTEPDLFSEFTLUPQ ‣%PDLFS.BDIJOF IUUQTEPDTEPDLFSDPNNBDIJOF
Docker for Windows/Mac ͱ Docker Machine ͷҧ͍ ϋʔυΣΞ 8JOEPXTNBD04 )ZQFS7YIZWF
ϋʔυΣΞ ϗετ04 %PDLFS&OHJOF %PDLFSGPS8JOEPXT.BD %PDLFS.BDIJOF ϛυϧΣΞ ΞϓϦ ϛυϧΣΞ ΞϓϦ ԾԽιϑτ ήετ04 %PDLFS&OHJOF ϛυϧΣΞ ΞϓϦ ϛυϧΣΞ ΞϓϦ
Docker Machineͷεεϝ Ҋ݅͝ͱʹԾϚγϯΛ࡞͢ΕɺෳҊ݅ͷίϯςφΛಉ࣌ʹ ্ཱͪ͛ͯϙʔτͷ͔ͿΓ͕ͳ͍ ԾϚγϯຖʹ*1͕ৼΒΕΔͷͰIPTUTͰ໊લղܾ͕Մೳ ԾϚγϯͷσΟεΫ༰ྔΛফඅͯ͠͠·͏ ϗετϚγϯʹϙʔτϚοϐϯά͢ΔΘ͚Ͱͳ͍ͷͰɺ ଞͷϚγϯ͔ΒΞΫηεͰ͖ͳ͍ ˠϗετϚγϯʹ8FCαʔόΛཱ͔ͯͯͦ͜ΒϓϩΩγͰԾϚγϯʹඈ͢ํ๏ͰΞΫηεՄೳ
DockerͷΠϯετʔϧ
Docker DesktopΛΠϯετʔϧ ‣ IUUQTXXXEPDLFSDPNQSPEVDUTEPDLFSEFTLUPQ
Docker DesktopΛΠϯετʔϧ
Docker DesktopΛΠϯετʔϧ
Docker DesktopΛΠϯετʔϧ ্2ͭͷνΣοΫϘοΫεඞਢ ར༻نͱϓϥΠόγʔϙϦγʔͷಉҙ ొ֬ೝͷϝʔϧ͕ඈΜͰ͘ΔͷͰ ϝʔϧͷϦϯΫΛΫϦοΫͯ͠ొྃ
Docker DesktopΛΠϯετʔϧ
Docker DesktopΛΠϯετʔϧ
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
Hello PHP on Docker
PHPެࣜΠϝʔδ ‣ %PDLFS)VCIUUQTIVCEPDLFSDPN ‣ %PDLFSΠϝʔδͷϨϙδτϦ ‣ 1)1ެࣜͷΠϝʔδ IUUQTIVCEPDLFSDPN@QIQ ‣ d
CFUB ·Ͱ͋Δ
None
PHPެࣜΠϝʔδ ‣ 1)1ͷΠϝʔδʹ৭ʑͳछྨ͕͋Δ ‣ DMJ ‣ GQN ‣ BQBDIF ‣
DMJBMQJOF ‣ GQNBMQJOF ‣ DMJBMQJOF ࠷ॳͷࣈ1)1όʔδϣϯ DMJ$-* ίϚϯυϥΠϯ ൛ GQN1)1'1.൛ BQBDIF"QBDIFIUUQEಉࠝ൛ [UT;54ʢ;FOE5ISFBE4BGFUZʣରԠ൛ ௨ৗ%FCJBOϕʔε BMQJOF͕ͭ͘ͱΑΓܰྔͳ"MQJOF-JOVYϕʔε
σϞ
DockerΠϝʔδΛpull͢Δ ‣ ࠓճBQBDIFΛ༻ͯ͠ΈΔ ‣docker pull php:7.2-apache ‣ docker imagesͰखݩͷΠϝʔδͷϦετΛ֬ೝ
hello.phpΛ༻ҙ͢Δ <?php $version = phpversion(); $sapi = PHP_SAPI; ?> <h1>Hello
PHP <?= $version ?> on <?= $sapi ?></h1>
PHPίϯςφΛىಈ͢Δ docker run \ --rm \ -p 8000:80 \ -v
"$PWD":/var/www/html \ php:7.2-apache ˡίϯςφΛىಈ ˡίϯςφΛऴྃͨ͠Βআ͢Δ ˡίϯςφͷϙʔτΛϗετͷʹׂΓͯ ˡݱࡏͷσΟϨΫτϦΛWBSXXXIUNMʹϚϯτ ˡQIQBQBDIFͷΠϝʔδ͔Β࣮ߦ IUUQMPDBMIPTUͰΞΫηεͰ͖Δ
CLIͰPHPΛىಈ͢Δ docker run \ --rm \ -v "$PWD":/var/www/html \ php:7.2-apache
\ php hello.php ˡίϯςφΛىಈ ˡίϯςφΛऴྃͨ͠Βআ͢Δ ˡݱࡏͷσΟϨΫτϦΛWBSXXXIUNMʹϚϯτ ˡQIQBQBDIFͷΠϝʔδ͔Β࣮ߦ ˡQIQίϚϯυͰIFMMPQIQΛ࣮ߦ
DockerͰ͓͖͍֮͑ͯͨίϚϯυ ‣ EPDLFSQVMM ‣ EPDLFSSVO ‣ EPDLFSQTEPDLFSQTB ‣ EPDLFSMPHT ‣
EPDLFSJNBHFT
ΧελϜPHPΠϝʔδΛ࡞
ެࣜΠϝʔδͰΓͳ͍ ‣ ެࣜΠϝʔδʹσϑΥϧτͰೖ͍ͬͯΔ1)1֦ுͰ ࣮ࡍͷ։ൃͰ͖ͳ͍ ‣ QEP@NZTRM(% 9EFCVHͳͲΑ͘͏֦ுೖͬ ͍ͯͳ͍ ඞཁͳ֦ுΛΠϯετʔϧͨ͠ %PDLFSΠϝʔδΛ࡞Δ
DockerfileͰ͑Δαϙʔτπʔϧ ‣ 1)1ίΞʹؚ·ΕΔ֦ுΛΠϯετʔϧ͢Δ ‣ EPDLFSQIQFYUJOTUBMM ‣ EPDLFSQIQFYUDPOpHVSF ‣ QFDM֦ுΛΠϯετʔϧ͢Δ ‣
EPDLFSQIQFYUFOBCMF
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ύοέʔδΞοϓσʔτ ˡ(%ʹඞཁͳύοέʔδΛΠϯετʔϧ ˡ(%֦ுͷϏϧυΦϓγϣϯΛࢦఆ ˡ(%֦ுΛΠϯετʔϧ
Docker ComposeͰ ։ൃڥΛߏங͢Δ
Docker Composeͱ ‣ ෳͷίϯςφ͔ΒΔαʔϏεͷߏɾؔ࿈Λ ϑΝΠϧͰఆٛ͠ཧΛ༰қʹ͢Δπʔϧ ‣ ֤αʔϏείϯςφͷఆٛͳͲهड़ͨ͠ EPDLFSDPNQPTFZNMϑΝΠϧΛ࡞͢Δ ‣ EPDLFSDPNQPTFίϚϯυΛͬͯαʔϏεཧ
EPDLFSίϚϯυͷΈͰෳίϯςφΛ ಈ͔͢ͷਏ͍ͷͰඞਢʂ
WordPressΛDockerͰಈ͔͢ ‣ 1)1"QBDIFͱ.Z42-ͷΈ߹Θͤ ‣ 1)1ΧελϜΠϝʔδɺ.Z42-ެࣜΠϝʔδΛ ༻͢Δ ‣ ࠓճ%PDLFSGPS.BD্Ͱಈ͔͢ "QBDIF 1)1
.Z42- 8PSE1SFTT 8000:80 13306:3306
WordPressΛDockerͰಈ͔͢ ‣ 1)1ΧελϜΠϝʔδͷϙΠϯτ ‣ 8PSE1SFTT.Z42-֦ுPS.Z42-J֦ுΛͬͯ .Z42-ͱଓ͢Δ ‣ ը૾αϜωΠϧͷ࡞ʹ(%·ͨJNBHJDL͕ඞཁ ͜ΕΒͷ֦ு1)1ެࣜΠϝʔδʹ ؚ·Εͳ͍ͷͰཁΠϯετʔϧ
σϞ
·ͱΊ ։ൃڥͳΔ͘ຊ൪ڥͱಉ͡ʹ͠Α͏ ‣ νʔϜͰ։ൃ͢ΔͳΒ։ൃڥΛڞ༗Ͱ͖ΔΑ͏ʹ %PDLFS։ൃڥΛ࡞Δɾڞ༗͢Δͷʹศར ‣ͦͷ··ຊ൪ڥͰར༻͢Δ͜ͱՄೳ %PDLFS$PNQPTFΛͬͯߏΛఆٛ͠Α͏
DockerͷυΩϡϝϯτ ‣%PDLFSެࣜ IUUQTEPDTEPDLFSDPN ‣༗ࢤͷํʹΑΔຊޠ༁ IUUQEPDTEPDLFSKQ ˞WϕʔεʢલʣͷͷͳͷͰҙ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ Ξϯέʔτͷ͝ճΑΖ͓͘͠ئ͍͠·͢