DockerでApache+PHP+MySQLの環境構築

Be33a704f251c77162896ac5ba03e9ac?s=47 SAW
May 16, 2020

 DockerでApache+PHP+MySQLの環境構築

関西PHP勉強会 の発表資料です。

Be33a704f251c77162896ac5ba03e9ac?s=128

SAW

May 16, 2020
Tweet

Transcript

  1. 4BUUI.BZ ؔ੢1)1ษڧձ %PDLFSͰ"QBDIF 1)1 .Z42-ͷ ؀ڥߏங

  2. ؔ੢1)1ษڧձ ๏ࢯ໊Ճ౻फҰ࿠ ࡀ  ‣ ϋϯυϧωʔϜ4"8 ‣ 5XJUUFS!B[VLJ@FBUFS ‣ (JU)VCB[VLJQFOHVJO

    ๏ॴଐגࣜձࣾ.4&/ ೥໨ $(whoami) NBD04 7VFKT -JOVY 'SFF#4%
  3. ؔ੢1)1ษڧձ ๏ϩʔΧϧͷ؀ڥΛԚ͢͜ͱͳ͘"QBDIF 1)1 .Z42-ͷ؀ڥΛ੔͍͑ͨ ‣ %PDLFSΛར༻ͯ͠؀ڥߏங ๏.Z42-ͷίϯςφʹผίϯςφ্ͷ1)1ϓϩάϥϜ͔Β઀ଓ͍ͨ͠ ‣ 1)1ίϯςφ͔ΒMPDBMIPTUͷ൪ϙʔτΛࢦఆͯ͠΋઀ଓʹࣦഊ .PUJWBUJPO

  4. %PDLFSίϯςφͷߏஙखॱ

  5. ؔ੢1)1ษڧձ ๏"QBDIF 1)1QIQBQBDIF ๏.Z42-NZTRM ‣ 1)1ͷϥΠϒϥϦ͕.Z42-YܥͷσϑΥϧτͷೝূํࣜ DBDIJOH@TIB@QBTTXPSE ʹະରԠ %PDLFSίϯςφͷߏ੒ QIQBQBDIF

    NZTRM "QBDIF <?php ... ?> .Z42- ઀ଓ
  6. ؔ੢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
  7. ؔ੢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
  8. ؔ੢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
  9. ؔ੢1)1ษڧձ ๏1%0ͷίϯετϥΫλͷୈҾ਺Λमਖ਼ ‣ host=ͷՕॴΛ.Z42-ͷίϯςφ໊ʹमਖ਼ ઀ଓઃఆͷมߋ <?php # host= の右辺には MySQL

    のコンテナ名 (mysql-db) を指定 $con = new PDO(‘mysql:dbname=db;host=mysql-db’, ‘db’, ‘test’); # 以下省略
  10. ؀ڥߏங׬ྃ

  11. ίϯςφ࡞੒ࡁΈͷ৔߹͸ 

  12. ؔ੢1)1ษڧձ ๏%PDLFSωοτϫʔΫʹ࡞੒ࡁΈίϯςφΛ઀ଓ ๏%PDLFSίϯςφͷ*1ΞυϨεΛࢦఆͯ͠઀ଓ ίϯςφ࡞੒ࡁΈͷ৔߹ͷ؀ڥߏங

  13. ؔ੢1)1ษڧձ ๏docker network connect ネットワーク名 コンテナ名Ͱ%PDLFSωοτϫʔΫʹ઀ଓ ‣ ઀ଓઃఆ͸લड़ͷ಺༰ͱಉ༷ʹมߋ ࡞੒ࡁΈίϯςφͷ઀ଓํ๏ $

    docker network connect my-network php-server $ docker network connect my-network mysql-db
  14. ؔ੢1)1ษڧձ ๏%PDLFSωοτϫʔΫΛར༻ͤͣʹMPDBMIPTUͰׂΓ౰ͯͨϙʔτ͔Β઀ଓ ‣ .Z42-ίϯςφͷ*1ΞυϨεΛࢦఆͯ͠઀ଓ  .Z42-ίϯςφͷ/etc/hostsΛ֬ೝ  1%0ͷ઀ଓઃఆΛมߋ ‣ ίϯςφͷ࠶ىಈͳͲͰ*1ΞυϨε͕มߋ͞Εͨ৔߹ʹϓϩάϥϜͷमਖ਼͕ඞཁ

    ίϯςφͷ*1ΞυϨεͰ઀ଓ͢Δํ๏
  15. ؔ੢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
  16. ؔ੢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’); # 以下省略
  17. ؔ੢1)1ษڧձ ๏%PDLFSωοτϫʔΫΛ࡞੒ͯ͠ίϯςφΛ઀ଓ ‣ 1)1ͱ.Z42-ͷίϯςφؒͰ௨৴ ๏1)1ίϯςφʹ.Z42-ͷ1%0υϥΠόΛΠϯετʔϧ ๏઀ଓઌͷ.Z42-ͷϗετ໊Λίϯςφ໊ʹઃఆ ૯ׅ

  18. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠