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でApache+PHP+MySQLの環境構築
Search
SAW
May 16, 2020
Programming
2
980
DockerでApache+PHP+MySQLの環境構築
関西PHP勉強会 の発表資料です。
SAW
May 16, 2020
Tweet
Share
More Decks by SAW
See All by SAW
Provide/Inject で TypeScript の恩恵を受ける方法
azuki
3
76
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
240
OSS contributor への第一歩を踏み出すまでの物語
azuki
1
160
Eloquent で relation を扱う基礎
azuki
0
90
メイキング・オブ・PHPカンファレンス 〜PHPカンファレンス関西2024の運営スタッフが語る舞台裏〜
azuki
0
58
ブラウザでテキストを読み上げる
azuki
0
110
計画性ないけれどノリと勢いだけで地方でも勉強会を開くすゝめ 〜 PHPカンファレンス関西2024 の懇親会 LT のその後 〜
azuki
0
53
GraphQL 入門
azuki
1
100
JavaScript で音声認識を試してみよう
azuki
0
150
Other Decks in Programming
See All in Programming
Tuning GraphQL on Rails
pyama86
2
1k
Progressive Web Apps für Desktop und Mobile mit Angular (Hands-on)
christianliebel
PRO
0
110
2万ページのSSG運用における工夫と注意点 / Vue Fes Japan 2024
chinen
3
1.3k
hotwire_or_react
harunatsujita
8
3.9k
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
1k
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
6
2.6k
Vue SFCのtemplateでTypeScriptの型を活用しよう
tsukkee
3
1.5k
cXML という電子商取引の トランザクションを支える プロトコルと向きあっている話
phigasui
3
2.2k
WEBエンジニア向けAI活用入門
sutetotanuki
0
300
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
690
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
230
生成 AI を活用した toitta 切片分類機能の裏側 / Inside toitta's AI-Based Factoid Clustering
pokutuna
0
560
Featured
See All Featured
Done Done
chrislema
181
16k
GitHub's CSS Performance
jonrohan
1030
460k
Code Review Best Practice
trishagee
64
17k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Faster Mobile Websites
deanohume
304
30k
How GitHub (no longer) Works
holman
311
140k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
Code Reviewing Like a Champion
maltzj
519
39k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
Transcript
4BUUI.BZ ؔ1)1ษڧձ %PDLFSͰ"QBDIF 1)1 .Z42-ͷ ڥߏங
ؔ1)1ษڧձ ๏ࢯ໊Ճ౻फҰ ࡀ ‣ ϋϯυϧωʔϜ4"8 ‣ 5XJUUFS!B[VLJ@FBUFS ‣ (JU)VCB[VLJQFOHVJO
๏ॴଐגࣜձࣾ.4&/ $(whoami) NBD04 7VFKT -JOVY 'SFF#4%
ؔ1)1ษڧձ ๏ϩʔΧϧͷڥΛԚ͢͜ͱͳ͘"QBDIF 1)1 .Z42-ͷڥΛ͍͑ͨ ‣ %PDLFSΛར༻ͯ͠ڥߏங ๏.Z42-ͷίϯςφʹผίϯςφ্ͷ1)1ϓϩάϥϜ͔Βଓ͍ͨ͠ ‣ 1)1ίϯςφ͔ΒMPDBMIPTUͷ൪ϙʔτΛࢦఆͯ͠ଓʹࣦഊ .PUJWBUJPO
%PDLFSίϯςφͷߏஙखॱ
ؔ1)1ษڧձ ๏"QBDIF 1)1QIQBQBDIF ๏.Z42-NZTRM ‣ 1)1ͷϥΠϒϥϦ͕.Z42-YܥͷσϑΥϧτͷೝূํࣜ DBDIJOH@TIB@QBTTXPSE ʹະରԠ %PDLFSίϯςφͷߏ QIQBQBDIF
NZTRM "QBDIF <?php ... ?> .Z42- ଓ
ؔ1)1ษڧձ ๏1)1ͱ.Z42-ͷίϯςφؒ௨৴Λߦ͏ͨΊʹ࡞ ‣ docker network create ネットワーク名Ͱ%PDLFSωοτϫʔΫΛ࡞ ๏docker network lsͰ࡞͞Εͨ%PDLFSωοτϫʔΫͷҰཡΛදࣔ
%PDLFSωοτϫʔΫͷ࡞ $ docker network create my-network $ docker network ls NETWORK ID NAME DRIVER SCOPE 6681a32a3d6f bridge bridge local bc8ace895846 host host local 74bc6dce3a53 my-network bridge local 6f730504383f none null local
ؔ1)1ษڧձ ๏docker runίϚϯυͰίϯςφ࡞࣌ʹ--networkΦϓγϣϯΛ༩ ‣ ࡞ͨ͠%PDLFSωοτϫʔΫʹଓ ίϯςφͷ࡞ # オプションは一部省略 $ docker
run -d --name php-server --network my-network php:apache $ docker run -d --name mysql-db --network my-network mysql:5.7.27
ؔ1)1ษڧձ ๏σϑΥϧτͰ.Z42-ͷ1%0υϥΠό͕ະΠϯετʔϧ ‣ ίϯςφʹೖΓdocker-php-ext-installίϚϯυΛ࣮ߦͯ͠Πϯετʔϧ .Z42-ͷυϥΠόpdo_mysqlΛࢦఆ 1%0͕ೖ͍ͬͯͳ͍߹pdoࢦఆ 1%0υϥΠόͷΠϯετʔϧ $
docker exec -it php-server bash # docker-php-ext-install pdo_mysql
ؔ1)1ษڧձ ๏1%0ͷίϯετϥΫλͷୈҾΛमਖ਼ ‣ host=ͷՕॴΛ.Z42-ͷίϯςφ໊ʹमਖ਼ ଓઃఆͷมߋ <?php # host= の右辺には MySQL
のコンテナ名 (mysql-db) を指定 $con = new PDO(‘mysql:dbname=db;host=mysql-db’, ‘db’, ‘test’); # 以下省略
ڥߏஙྃ
ίϯςφ࡞ࡁΈͷ߹
ؔ1)1ษڧձ ๏%PDLFSωοτϫʔΫʹ࡞ࡁΈίϯςφΛଓ ๏%PDLFSίϯςφͷ*1ΞυϨεΛࢦఆͯ͠ଓ ίϯςφ࡞ࡁΈͷ߹ͷڥߏங
ؔ1)1ษڧձ ๏docker network connect ネットワーク名 コンテナ名Ͱ%PDLFSωοτϫʔΫʹଓ ‣ ଓઃఆલड़ͷ༰ͱಉ༷ʹมߋ ࡞ࡁΈίϯςφͷଓํ๏ $
docker network connect my-network php-server $ docker network connect my-network mysql-db
ؔ1)1ษڧձ ๏%PDLFSωοτϫʔΫΛར༻ͤͣʹMPDBMIPTUͰׂΓͯͨϙʔτ͔Βଓ ‣ .Z42-ίϯςφͷ*1ΞυϨεΛࢦఆͯ͠ଓ .Z42-ίϯςφͷ/etc/hostsΛ֬ೝ 1%0ͷଓઃఆΛมߋ ‣ ίϯςφͷ࠶ىಈͳͲͰ*1ΞυϨε͕มߋ͞Εͨ߹ʹϓϩάϥϜͷमਖ਼͕ඞཁ
ίϯςφͷ*1ΞυϨεͰଓ͢Δํ๏
ؔ1)1ษڧձ ๏.Z42-ίϯςφͷίϯςφ*%Λ֬ೝ ‣ docker psίϚϯυͳͲͰίϯςφ*%͕֬ೝՄೳ ๏.Z42-ίϯςφͷ/etc/hostsΛ֬ೝ ‣ ίϯςφ*%ʹׂΓͯΒΕ͍ͯΔ*1ΞυϨε͕.Z42-ίϯςφͷ*1ΞυϨε .Z42-ίϯςφͷ*1ΞυϨεΛ֬ೝ $
docker exec -it mysql-db bash # # cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ( 中略 ) 172.17.0.3 ebc8580e8dd5
ؔ1)1ษڧձ ๏1%0ͷίϯετϥΫλΛमਖ਼ ‣ hosts=Λ.Z42-ίϯςφͷ*1ΞυϨεʹมߋ 1%0ͷଓઃఆͷมߋ <?php # MySQL コンテナの IP
アドレス (172.17.0.3) を指定 $con = new PDO(‘mysql:dbname=db;host=172.17.0.3’, ‘db’, ‘test’); # 以下省略
ؔ1)1ษڧձ ๏%PDLFSωοτϫʔΫΛ࡞ͯ͠ίϯςφΛଓ ‣ 1)1ͱ.Z42-ͷίϯςφؒͰ௨৴ ๏1)1ίϯςφʹ.Z42-ͷ1%0υϥΠόΛΠϯετʔϧ ๏ଓઌͷ.Z42-ͷϗετ໊Λίϯςφ໊ʹઃఆ ૯ׅ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠