Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

SAW
May 16, 2020

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

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

SAW

May 16, 2020
Tweet

More Decks by SAW

Other Decks in Programming

Transcript

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

    View Slide

  2. ؔ੢1)1ษڧձ
    ๏ࢯ໊Ճ౻फҰ࿠ ࡀ

    ‣ ϋϯυϧωʔϜ4"8
    ‣ 5XJUUFS!B[VLJ@FBUFS
    ‣ (JU)VCB[VLJQFOHVJO
    ๏ॴଐגࣜձࣾ.4&/ ೥໨

    $(whoami)
    NBD04
    7VFKT
    -JOVY
    'SFF#4%

    View Slide

  3. ؔ੢1)1ษڧձ
    ๏ϩʔΧϧͷ؀ڥΛԚ͢͜ͱͳ͘"QBDIF1)1.Z42-ͷ؀ڥΛ੔͍͑ͨ
    ‣ %PDLFSΛར༻ͯ͠؀ڥߏங
    ๏.Z42-ͷίϯςφʹผίϯςφ্ͷ1)1ϓϩάϥϜ͔Β઀ଓ͍ͨ͠
    ‣ 1)1ίϯςφ͔ΒMPDBMIPTUͷ൪ϙʔτΛࢦఆͯ͠΋઀ଓʹࣦഊ
    .PUJWBUJPO

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  9. ؔ੢1)1ษڧձ
    ๏1%0ͷίϯετϥΫλͷୈҾ਺Λमਖ਼
    ‣ host=ͷՕॴΛ.Z42-ͷίϯςφ໊ʹमਖ਼
    ઀ଓઃఆͷมߋ
    # host= の右辺には MySQL のコンテナ名 (mysql-db) を指定
    $con = new PDO(‘mysql:dbname=db;host=mysql-db’, ‘db’, ‘test’);
    # 以下省略

    View Slide

  10. ؀ڥߏங׬ྃ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  16. ؔ੢1)1ษڧձ
    ๏1%0ͷίϯετϥΫλΛमਖ਼
    ‣ hosts=Λ.Z42-ίϯςφͷ*1ΞυϨεʹมߋ
    1%0ͷ઀ଓઃఆͷมߋ
    # MySQL コンテナの IP アドレス (172.17.0.3) を指定
    $con = new PDO(‘mysql:dbname=db;host=172.17.0.3’, ‘db’, ‘test’);
    # 以下省略

    View Slide

  17. ؔ੢1)1ษڧձ
    ๏%PDLFSωοτϫʔΫΛ࡞੒ͯ͠ίϯςφΛ઀ଓ
    ‣ 1)1ͱ.Z42-ͷίϯςφؒͰ௨৴
    ๏1)1ίϯςφʹ.Z42-ͷ1%0υϥΠόΛΠϯετʔϧ
    ๏઀ଓઌͷ.Z42-ͷϗετ໊Λίϯςφ໊ʹઃఆ
    ૯ׅ

    View Slide

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

    View Slide