$30 off During Our Annual Pro Sale. View Details »

CircleCI 2.0 を使い倒そう / phpcon kansai 2018 circlci docker

CircleCI 2.0 を使い倒そう / phpcon kansai 2018 circlci docker

PHPカンファレンス関西 2018 CircleCI 2.0 を使い倒そうというタイトルでトークしたものです

TAKAHASHI Kunihiko

July 14, 2018
Tweet

More Decks by TAKAHASHI Kunihiko

Other Decks in Technology

Transcript

  1. $JSDMF$*
    Λ࢖͍౗ͦ͏
    QIQDPOGFSFODF,BOTBJ
    LVOJU

    View Slide

  2. ࣗݾ঺հ

    !LVOJU
    ✓ߴڮ๜඙
    ✓OFDPNPSJ--$
    ✓ʮ1)1ϚχϡΞϧΛಡ΋͏ʯQPEDBTU
    ✓IUUQQIQNBOVBMOFDPNPSJBTJB
    ✓QIQPOEPD
    ✓ฌݿݝग़਎

    View Slide

  3. Կ͸͓͍ͯ΋
    ✓ݱࡏɺདྷ೥ͷ$BLF'FTUΛͲ͜Ͱ։࠵͢
    Δ͔ͱ͍͏։࠵஍ͷ౤ථ͕ߦΘΕ͍ͯ·͢
    ✓ͦͷީิʹͳΜͱ೔ຊؚ͕·Ε͓ͯΓ·͢
    ͷͰͥͻօ͞Μ౤ථΛ͓ئ͍͠·͢ʂ
    ✓IUUQTDBLFGFTUPSH
    ✓౤ථʹ͸.Z$BLF1)1αΠτ΁ͷొ࿥
    ͕ඞཁͱͳΔͷͰͦͷ఺͚͓ͩؾΛ͚ͭͩ͘
    ͍͞ʂ

    View Slide

  4. ͦ΋ͦ΋$*ͱ͸
    ✓8JLJQFEJB͞ΜʹΑΕ͹
    ✓$POUJOVPVT*OUFHSBUJPOͷུ
    ✓ܧଓతΠϯςάϨʔγϣϯ
    ✓ओʹϓϩάϥϚʔͷΞϓϦέʔγϣϯ࡞੒࣌ͷ
    ඼࣭վળ΍ೲظͷ୹ॖͷͨΊͷश׳ͷ͜ͱͰ͋Δɻ
    ΤΫετϦʔϜɾϓϩάϥϛϯά 91
    ͷϓϥΫ
    ςΟεͷҰͭͰɺڱٛʹ͸Ϗϧυ΍ςετɺΠϯ
    εϖΫγϣϯͳͲΛܧଓతʹ࣮ߦ͍ͯ͘͜͠ͱΛ
    ҙຯ͢Δ

    View Slide

  5. ݁ہ$*ͬͯͳʹ͢Μͩʁ
    ✓ԿΒ͔ͷτϦΨʔΛड͚ͯ
    ✓ܾΊΒΕͨॲཧΛߦ͏

    View Slide

  6. τϦΨʔͱͳΔͷ͸
    ✓(JU)VC౳ʹίʔυΛ
    QVTIͨ͠ͱ͖ʹىಈ
    ✓ܾΊΒΕͨ࣌ؒʹىಈ
    ✓खಈͰىಈ

    View Slide

  7. ࣮ߦ͢Δॲཧྫ
    ✓ඞཁͳϥΠϒϥϦͷΠϯετʔϧ
    ✓DPNQPTFSJOTUBMMతͳ
    ✓ίʔσΟϯάελΠϧνΣοΫ
    ✓৔߹ʹΑͬͯ͸ίʔυϑΥϚοτ΋͔͚ͯ͠·͏
    ✓จ๏νΣοΫ
    ✓ίϯύΠϧϦϯΫ 1)1Ͱ͸ͳ͍͚Ͳ

    ✓ςετ ୯ମ&&

    ✓σϓϩΠ

    View Slide

  8. $JSDMF$*ʹ͍ͭͯ
    ✓ͱͱ͍͏όʔδϣϯҧ͍ͷαʔϏ
    ε͕͋Δ
    ✓͸དྷ݄
    ຤ʹऴྃ͢Δ
    ✓͸೉͍͠ͱ͍͏࿩ΛΑ͘ฉ͘
    ✓͍ͭ࠷ۙ$JSDMF$*+BQBO͕Ͱ͖ͯɺࠓ
    πΠολʔͰઈࢍΤΰαʔν͞ΕͯΔͷͰɺ
    ࣭໰ͨ͠Β͙͢ʹ৯͍͍ͭͯ΋Β͑Δ͔Βνϟ
    ϯεʂ

    View Slide

  9. ͞ΑͳΒ$JSDMF$*
    ✓6CVOUVͰͭ͘ΒΕͨશ෦ೖΓͷ7.্Ͱ
    ςετΛߦ͏
    ✓QIQFOW͕࢖ΘΕ͍ͯͯඞཁʹԠͯ͡όʔ
    δϣϯΛ੾Γସ͑Δ
    ✓.Z42-΍3FEJT΋ඞཁʹԠͯ͡࢖͑Δ
    ✓σϑΥϧτͷڍಈ͕͋ΓɺͦΕΛͦͷ··࢖
    ͑͹ྑ͍ͷͰ͋Ε͹ઃఆ͕͋·Γඞཁͳ͔ͬͨ
    ✓ͳΕͨਓ͔Β͢Δͱͱͯ΋؆୯

    View Slide

  10. Α͏ͦ͜$JSDMF$*
    ✓ಉ༷ͷ7.ϕʔεͷॲཧ΋Ͱ͖Δ͕ਪ঑͞Εͯͳ
    ͍
    ✓ਪ঑͞ΕΔͷ͸%PDLFSΠϝʔδΛ࢖͏΋ͷ
    ✓%PDLFSͷ஌͕ࣝඞཁͱͳΔͷͰ֮͑Δ͜ͱ͕૿͑
    ͨ
    ✓.Z42-΍3FEJTΛ͔ͭ͏ͳΒ͹ɺͦΕ༻ͷ
    %PDLFSΠϝʔδΛ࢖͏ඞཁ͕͋Δ
    ✓Θ͔ͬͯ͠·͑͹ɺԿ΋͔΋ίϯτϩʔϧͰ͖ΔͷͰ
    ศརͳͷ͕ͩɺ֮͑Δ͜ͱ͕૿͑ͨͷͰͱ͖ͬͭʹ͍͘
    ೉͍͠ͱ͍͍ͬͯΔͻͱ͕ଟ͍

    View Slide

  11. $JSDMF$*ͷར༻ྉۚ͸ʁ
    ✓ແྉ࿮͕͋Δͷͬͯ͠·ͨ͠ʁ
    ✓ίϯςφ
    ✓ฒྻ࣮ߦͰ͖ͳ͍
    ✓෼݄·ͰॲཧՄೳ
    ✓ຊ֨తʹ࢖͏ͱ͍͍ײ͡ʹ࢖͍੾Δ࣌ؒ
    ✓ର৅ϦϙδτϦ࣮ߦϢʔβ͕ෳ਺Ͱ΋͍͍
    ✓ϓϥΠϕʔτϦϙδτϦͰ΋͍͍
    ✓ฒྻ౓ɺ࣮ߦίϯςφ਺ʹԠͯ͡՝ۚ͞ΕΔ
    ✓ίϯςφ૿΍͢͝ͱʹ݄
    ✓·ͩҰൠެ։͞Εͯͳ͍͕ɺैྔ՝ۚϓϥϯ΋௥Ճ͞ΕΔ༧ఆ

    View Slide

  12. $JSDMF$*Ͱͷಈ࡞Πϝʔδ
    ✓%PDLFSΠϝʔδΛऔಘ͠ɺίϯςφΛىಈ
    ✓ىಈͨ͠ίϯςφ্ʹιʔεΛHJUDMPOF
    ✓ىಈͨ͠ίϯςφ্ͰDPNQPTFSJOTUBMMΛ࣮ߦ
    ✓ىಈͨ͠ίϯςφ্ͰQIQDTΛ࢖ͬͯίʔσΟϯά
    ελΠϧνΣοΫ
    ✓ىಈͨ͠ίϯςφ্Ͱ1IBOΛ࢖ͬͯ੩తղੳͯ͠จ
    ๏νΣοΫ
    ✓ىಈͨ͠ίϯςφ্Ͱ1)16OJUΛ࢖ͬͯ୯ମςετ
    ✓͜͜·Ͱͷॲཧ͕੒ޭ͔ͨ͠Ͳ͏͔ΛTMBDLʹ௨஌

    View Slide

  13. $JSDMF$*ͱͷ࿈ܞํ๏
    ✓ઃఆϑΝΠϧ͸ɺϦϙδτϦͷτο
    ϓʹDJSDMFDJͱ͍͏σΟϨΫτ
    ϦΛ࡞ΓɺͦͷதʹDPOpHZNM
    ͱ͍͏ϑΝΠϧΛஔ͘ͱͦΕΛ࢖ͬ
    ͯ$*͕࣮ߦ͞ΕΔ
    ✓DPOpHZNMͷॻ͖ํΛ؆୯ʹ
    આ໌͍͖ͯ͠·͢

    View Slide

  14. DJSDMFDJDPOpHZNM
    version: 2
    jobs:
    build:
    docker:
    - image: circleci/php:7.1-apache-browsers
    - image: circleci/mysql:5.7
    steps:
    - checkout
    - restore_cache:
    keys:
    - composer-{{ arch }}—{{ checksum "composer.lock" }}
    - run: composer install
    - save_cache:
    key: composer-{{ arch }}—{{ checksum "composer.lock" }}
    paths:
    - ~/.composer/cache
    - run: ./vendor/bin/phpcs —standard=PSR2 ./app
    - run: mkdir ~/phpunit
    - run: ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml
    - store_test_results:
    path: ~/phpunit
    - store_artifacts:
    path: ~/phpunit

    View Slide

  15. DJSDMFDJDPOpHZNM
    ✓ઃఆ͢ΔηΫγϣϯ
    ✓KPCT
    ✓ෳ਺ͷδϣϒΛઃఆ͢Δ
    ✓XPSLqPXT
    ✓ෳ਺ͷδϣϒΛͲͷΑ͏ʹ࣮ߦ
    ͢Δ͔Λઃఆ͢Δ

    View Slide

  16. DJSDMFDJDPOpHZNM
    version: 2
    jobs:
    build:
    docker:
    - image: circleci/php:7.1-apache-browsers
    - image: circleci/mysql:5.7
    steps:
    - checkout
    - restore_cache:
    keys:
    - composer-{{ arch }}—{{ checksum "composer.lock" }}
    - run: composer install
    - save_cache:
    key: composer-{{ arch }}—{{ checksum "composer.lock" }}
    paths:
    - ~/.composer/cache
    - run: ./vendor/bin/phpcs —standard=PSR2 ./app
    - run: mkdir ~/phpunit
    - run: ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml
    - store_test_results:
    path: ~/phpunit
    - store_artifacts:
    path: ~/phpunit

    View Slide

  17. KPCT
    ✓δϣϒΛઃఆ͢Δ δϣϒ͸ෳ਺͋ͬͯ΋ྑ͍

    ✓δϣϒ໊ ௨ৗ͸CVJMEͱ͍͏໊લʹ͢Δ

    ✓ޙ΄Ͳग़ͯ͘ΔXPSLqPXͰ࢖༻͢Δ
    ✓FYFDVUPSΛઃఆ
    ✓EPDLFS
    ✓NBDIJOF ಉ༷ͷ7.؀ڥ

    ✓NBDPT
    ✓TUFQTͰࡉ͔͍࣮ߦ಺༰Λઃఆ͢Δ

    View Slide

  18. DJSDMFDJDPOpHZNM
    version: 2
    jobs:
    build:
    docker:
    - image: circleci/php:7.1-apache-browsers
    - image: circleci/mysql:5.7
    steps:
    - checkout
    - restore_cache:
    keys:
    - composer-{{ arch }}—{{ checksum "composer.lock" }}
    - run: composer install
    - save_cache:
    key: composer-{{ arch }}—{{ checksum "composer.lock" }}
    paths:
    - ~/.composer/cache
    - run: ./vendor/bin/phpcs —standard=PSR2 ./app
    - run: mkdir ~/phpunit
    - run: ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml
    - store_test_results:
    path: ~/phpunit
    - store_artifacts:
    path: ~/phpunit

    View Slide

  19. TUFQT
    ✓DIFDLPVU
    ✓ιʔεΛDIFDLPVU͢Δ
    ✓SVO
    ✓ίϚϯυΛ࣮ߦ͢Δ
    ✓SFTUPSF@DBDIFTBWF@DBDIF
    ✓DPNQPTFS΍CVOEMFSΛຖճ΍͍ͬͯΔͱ࣌ؒ
    ͷΉͩͳͷͰɺద౰ͳΩʔΛ࢖ͬͯΩϟογϡ͢Δ
    ✓TUPSF@UFTU@SFTVMUTTUPSF@BSUJGBDUT
    ✓ςετ݁ՌΛ$*ͷ݁Ռදࣔʹ൓өͤ͞Δ

    View Slide

  20. DJSDMFDJDPOpHZNM
    version: 2
    jobs:
    build:
    docker:
    - image: circleci/php:7.1-apache-browsers
    - image: circleci/mysql:5.7
    steps:
    - checkout
    - restore_cache:
    keys:
    - composer-{{ arch }}—{{ checksum "composer.lock" }}
    - run: composer install
    - save_cache:
    key: composer-{{ arch }}—{{ checksum "composer.lock" }}
    paths:
    - ~/.composer/cache
    - run: ./vendor/bin/phpcs —standard=PSR2 ./app
    - run: mkdir ~/phpunit
    - run: ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml
    - store_test_results:
    path: ~/phpunit
    - store_artifacts:
    path: ~/phpunit

    View Slide

  21. SVO
    ✓ίϚϯυΛ࣮ߦ͢Δ΋ͷͩ
    ͕ɺ࣮ߦը໘Ͱදࣔ͢Δจࣈ
    ྻΛઃఆͰ͖Δ
    - run: ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml
    - run:
    name: run tests
    command: ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml
    - run:
    name: run tests
    command: |
    ./vendor/bin/phpunit --log-junit ~/phpunit/junit.xml

    View Slide

  22. ෳ਺ͷ%PDLFSΠϝʔδΛ࢖͏
    ✓EPDLFSFYFDVUPSͷઃఆͰෳ਺ͷΠϝʔδΛࢦఆ͢Δ
    ✓ͭ໨ʹࢦఆͨ͠Πϝʔδ͕ϓϥΠϚϦΠϝʔδʹͳΓɺ
    TUFQTҎ߱ͷίϚϯυ͸ͦͷΠϝʔδʹର࣮ͯ͠ߦ͞ΕΔ
    ✓ͦͷଞͷίϯςφͷϓϩηεʹ͸ɺ ϙʔτ൪
    ߸
    ͰΞΫηεͰ͖Δ
    version: 2
    jobs:
    build:
    docker:
    - image: php:7.1-apache
    - image: circleci/mysql:5.7
    environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: test_app
    MYSQL_USER: test
    MYSQL_PASSWORD: test
    - image: redis:3.2

    View Slide

  23. XPSLqPX
    ✓ෳ਺ͷδϣϒΛͲͷΑ͏ͳґଘؔ
    ܎ ॱ൪
    Ͱ࣮ߦ͢Δ͔ΛఆٛͰ͖Δ
    ✓ྫ͑͹ɺQIQDTͰΤϥʔ͕ͳ͍৔
    ߹ͷΈɺQIQVOJUΛ૸Β͍ͤͨͱ͔
    ✓ܾ·ͬͨ࣌ؒʹδϣϒΛ࣮ߦ͢Δ
    ػೳ΋͋Δ

    View Slide

  24. DJSDMFDJDPOpHZNM
    version: 2
    jobs:
    phpcs: ...
    test: ...
    deploy: ...
    workflows:
    version: 2
    phpcs_test_deploy_workflow:
    jobs:
    - phpcs
    - test:
    requires:
    - phpcs
    - deploy
    filters:
    branches:
    only:
    - master
    requires:
    - test

    View Slide

  25. DJSDMFDJDPOpHZNM
    version: 2
    jobs:
    daily_job: ...
    workflows:
    version: 2
    cron_workflow:
    triggers:
    - schedule:
    cron: “0 18 * * *”
    filters:
    branches:
    only:
    - develop
    jobs:
    - daily_job

    View Slide

  26. $JSDMF$*
    ✓ઃఆʹؔͯ͠͸ɺ࣮ߦ͍ͨ͠ίϚϯυ
    ΛSVOͰฒ΂͍͚ͯ͹͍͍͚ͩͳͷͰ
    ͦΜͳʹ೉͘͠ͳ͍
    ✓ϩʔΧϧͰಈ࡞νΣοΫ͢Δ
    DJSDMFDJίϚϯυ͕४උ͞Ε͍ͯΔ
    ✓ඍົʹڍಈ͕͓͔͍͠
    ✓XPSLqPXʹରԠͯ͠ͳ͍ɾɾɾ

    View Slide

  27. $JSDMF$*
    ✓ಈ࡞Πϝʔδͱઃఆํ๏͕
    Θ͔ͬͯ΋؊৺ͷ%PDLFS
    ͷ͜ͱ͕Θ͔Βͳ͍ͷͰɺͲ
    ͏ͨ͠Βྑ͍͔Θ͔Βͳ͍
    ✓ͱ͍͏͜ͱͰɺ͔͜͜Β͸
    %PDLFSೖ໳

    View Slide

  28. ࣌ؒνΣοΫ
    ͜͜·Ͱ෼
    ͩͱྑ͍ͳɾɾɾ

    View Slide

  29. %PDLFSͷ೉қ౓
    ✓%PDLFSͷ೉қ౓͸ஈ֊ʹ
    ෼͔ΕΔͷͰ͸ͳ͍͔ʁ
    ✓ୈҰஈ֊഑෍͞Ε͍ͯΔΠ
    ϝʔδΛར༻͢Δ͚ͩ
    ✓ୈೋஈ֊ࣗ෼ͰΠϝʔδΛ
    ࡞੒ͯͦ͠ΕΛར༻͢Δ

    View Slide

  30. ഑෍Πϝʔδ
    ✓%PDLFS)VCͱ͍͏࡞੒ࡁΈΠϝʔδ
    Λ഑෍͢Δ৔ॴ͕͋Δ
    ✓ͦ͜ʹͨ͘͞ΜͷΠϝʔδ͕ஔ͔Ε͍ͯ
    ΔͷͰͦΕΛར༻͢Δ͚ͩͰ΋͔ͳΓͷ͜
    ͱ͕Ͱ͖Δ
    ✓ײ֮తʹ͸CSFXJOTUBMMͰNZTRM
    ΛϩʔΧϧʹೖΕΔΈ͍ͨͳؾ෼Ͱ͔ͭ͑
    Δ

    View Slide

  31. ࣮ࡍʹ΍ͬͯΈΔ
    ✓1)1BQBDIFΛ
    %PDLFSͰಈ͔ͯ͠ΈΔ
    ˞EPDLFSίϚϯυͷΦϓγϣϯ͕͓΅͑ΒΕΜͷΜ
    ͡Όʔͱ͍͏͝ҙݟʹ͸ಉҙ͠·͢ɻ͍͢͝਺͋Δͷ
    Ͱɾɾɾ
    docker container run -it --rm -p 80:80 -v ~/Study/phpkansai/
    demo/htdocs:/var/www/html php:7.1-apache

    View Slide

  32. ഑෍Πϝʔδ
    ✓ͨͩ͠ɺࣗ෼ͷ༻్ʹ׬શʹ߹க͍ͯ͠Δͱ͸ݶΒͳ͍
    ✓ྫ͑͹ɺ1)1ͷΦϑΟγϟϧΠϝʔδʹ͸JOUM֦ு΍
    YEFCVH͸ೖͬͯͳ͍
    ✓ΦϑΟγϟϧΠϝʔδ͸͋Δఔ౓৴༻Ͱ͖Δ͕ɺ໺ྑΠϝʔ
    δ͸جຊతʹ৴༻Ͱ͖ͳ͍
    ✓͍ͭ࠷ۙɺ%PDLFS)VCͰ഑෍͞Ε͍ͯͨΠϝʔδʹʮ҉
    ߸௨՟࠾۷Ϙοτʯ͕ೖ͍ͬͯͨ͜ͱ͕χϡʔεʹͳͬͯͨ
    ✓IUUQTKQUFDIDSVODIDPN
    UBJOUFEDSZQUP
    NJOJOHDPOUBJOFSTQVMMFEGSPNEPDLFSIVC

    View Slide

  33. ͳΒ͹ࣗ෼Ͱͭ͘Ζ͏
    ✓%PDLFSΠϝʔδΛࣗ෼Ͱͭ͘Ζ͏ͱ
    ͢ΔͱҎԼͷ஌͕ࣝඞཁ
    ✓%PDLFSࣗମͷཧղ
    ✓-JOVYσΟετϦϏϡʔγϣϯͷཧղ
    ✓ZVNͱ͔BQUͱ͔
    ✓-JOVYίϚϯυͷཧղ
    ✓֤ιϑτ΢ΣΞͷNBLFํ๏ͷཧղ

    View Slide

  34. ٸʹϋʔυϧ͕͕͋Δ
    ✓ઌఔ΋͍͕ͬͨɺ%PDLFS)VCͰ͸ΦϑΟγϟϧΠ
    ϝʔδ͕഑෍͞Ε͍ͯΔ
    ✓͋ΘͤͯΠϝʔδΛ࡞੒͢Δ΋ͱͱͳΔ%PDLFSpMF
    ͕ެ։͞Ε͍ͯΔ΋ͷ͕͋Δ
    ✓ެ։͞Ε͍ͯΔ%PDLFSpMFΛΈΔ͚ͩͰ΋͔ͳΓ
    ͷ஌͕ࣝಘΒΕΔ
    ✓ͳͷͰ࠷ॳ͸ΦϑΟγϟϧΠϝʔδΛݩʹɺখมߋͨ͠
    ΠϝʔδΛ࡞Δͱ͜Ζ͔Β࢝ΊΔͷ͕͍͍
    ✓1)1ͷΦϑΟγϟϧΠϝʔδʹYEFCVH֦ுΛ͍
    Ε͚ͨͩͷΠϝʔδΛ࡞Δͱ͔

    View Slide

  35. ࣗ෼ͰΠϝʔδΛ࡞ΔϝϦοτ
    ✓ྫ͑͹ɺ$JSDMS$*Ͱɺ1)1ͷΦϑΟ
    γϟϧΠϝʔδΛͦͷ··࢖͏ͱɺຖճ$*
    Λճͨ͢ͼʹJOUM֦ுΛೖΕΔॲཧΛ૸
    ΒͤΔඞཁ͕͋Δ
    ✓$*ͷ͕࣌ؒ৳ͼΔ
    ✓༧ΊJOUM֦ு͕ೖͬͨΠϝʔδΛ࡞ͬͯ
    ͓͚͹ɺͦͷ͚࣌ؒͩ$*ͷ͕࣌ؒ୹ॖͰ
    ͖Δ

    View Slide

  36. %PDLFSʹ͍ͭͯ͸
    ✓ࠓճͷηογϣϯͰΑ͘Θ͔ΒΜ͔ͬͨ
    ํ͸ɺͥͻͱ΋͘͞ΒΠϯλʔωοτॴଐ
    ͷલဠ͞ΜͷࢿྉΛࢀর͍ͯͨͩ͘͠ͷ͕
    ͍͍͔ͱࢥ͍·͢
    ✓લဠ͞Μͷࢿྉ͸%PDLFSʹֶ͍ͭͯͿ
    ͷʹ࠷దͩͱࢥ͍·͢ ࢲ΋େม͓ੈ࿩ʹ
    ͳ͓ͬͯΓ·͢

    ✓IUUQTXXXTMJEFTIBSFOFU[FNCVUTV

    View Slide

  37. ϚϯΨͰΘ͔Δ%PDLFS
    ✓ື઒͍͋͞Μ͕ϚϯΨͰΘ͔Δ
    %PDLFSͱ͍͏࡭ࢠΛॻ͔Εͯ·͢
    ✓͜Ε͸ଓ͖෺Ͱࠓޙ΋ଓ͘Έ͍ͨ
    ͳͷͰ͜Ε͔Β࢝ΊΑ͏ͱ͍͏ํʹ
    ͸ͪΐ͏Ͳ͍͍͔΋ʂ
    ✓IUUQTOPUFNV
    MMNJOBUPMMOOGECFGGD

    View Slide

  38. ͯ͞ɺ%PDLFSͱ͸
    ✓%PDLFSࣾ چEPU$MPVE
    Λத৺ʹΦʔ
    ϓϯιʔεͱͯ͠։ൃ͞Ε͍ͯΔίϯςφ
    ܕԾ૝Խٕज़
    ✓ͷय़ʹόʔδϣϯͷ෇͚ํ͕มߋ
    ͞Εͯɺ%PDLFS$&ͱ͍ͬͨܗ
    ʹͳͬͨ
    ✓ͦΕ·Ͱ͸ɺ%PDLFSΈ͍ͨͳ
    ײͩͬͨ͡

    View Slide

  39. 7.ͱͷҧ͍
    ✓7.͸࣮ࡍͷϋʔυ΢ΣΞ౳
    ΛΤϛϡϨʔγϣϯ͠ɺͦͷ্
    Ͱ࣮ࡍͷ04ΛՔಇͤ͞Δ
    ✓ίϯςφܕԾ૝Խٕज़Ͱ͸ɺ
    طʹಈ͍͍ͯΔ04ͷϦιʔεΛ
    ࢖ͬͯɺ৽ͨͳ؀ڥΛىಈ͢Δ

    View Slide

  40. 7.ͱͷҧ͍
    )8
    04
    )ZQFSWJTPS
    )8 )8
    04 04
    "QBDIF 3FEJT
    1)1
    "QQT
    )8
    04
    .Z42-
    7.
    )8
    04
    %PDLFS&OHJOF
    "QBDIF 3FEJT
    1)1
    "QQT
    .Z42-
    %PDLFS

    View Slide

  41. Կ͕خ͍͠ͷʁ
    ✓ىಈ͕࣌ؒ୹͍
    ✓Ծ૝)8͓Αͼ04ͷى
    ಈ෦෼͕ͳ͍
    ✓ফඅϦιʔε͕গͳ͍

    View Slide

  42. %PDLFSͷಈ࡞
    Registry image container
    docker image pull
    docker image push
    docker container run
    docker container commit
    Dockerfile
    docker image build
    docker container exec

    View Slide

  43. 3FHJTUSZͱ͸
    ✓%PDLFS)VCͷΑ͏ʹɺ%PDLFSΠϝʔδΛ഑෍͢Δ΋
    ͷΛ3FHJTUSZͱ͍͏
    ✓%PDLFS)VC͸%PDLFS͕ࣾӡӦ͍ͯ͠Δ3FHJTUSZ
    ✓"84ʹ͸&$3ɺ(PPHMF$MPVEʹ͸($3ͱ͍͏
    3FHJTUSZ͕͋Δ
    ✓%PDLFS)VCͰ഑෍͞ΕͯΔ΋ͷ
    ✓$FOU04VCVOUV౳ͷ04ͷΠϝʔδ
    ✓1)13VCZ౳ͷݴޠؚ͕·ΕΔΠϝʔδ
    ✓&MBTUJD4FBSDI5FOTPS'MPX౳ͷιϑτ΢ΣΞؚ͕
    ·ΕΔΠϝʔδ

    View Slide

  44. ࣮ࡍͲ͏࢖͏ͷ͔ʁ
    ✓%PDLFS)VC͔Β%PDLFSΠϝʔδΛऔಘ͢Δ
    ✓औಘͨ͠ΠϝʔδΛ࣮ߦ͢Δͱ࣮ߦ؀ڥίϯςφ
    ͱͯ͠ಈ࡞͢Δ
    ✓7.ͱҧͬͯɺ࣮ߦΛऴྃ͢Δͱίϯςφʹର͢Δ
    มߋ͸ഁغ͞ΕΔ
    ✓࣮ߦ͢Δͨͼʹಉ͡ঢ়ଶ͔Βಈ࡞͢Δ
    ✓ͦΕͰ͸ࠔΔ৔߹ ·͊ɺ΄ͱΜͲ͕ͩ
    ɺϩʔΧ
    ϧͷϑΝΠϧγεςϜΛϚ΢ϯτͯͦ͜͠ʹσʔλ
    ΛӬଓԽ͢Δ

    View Slide

  45. Πϝʔδͱίϯςφ
    ✓࠷ॳΑͬͪ͘͝ΌʹͳΔ
    ✓%PDLFSΛ֮͑Δࡍͷ࠷ॳͷϋʔ
    υϧ
    ✓࣮ࡍʹಈ͔ͯ͠ײ֮Λ֮͑Δ
    ✓1)1ͱ1)1ͷΠϝʔδ
    Λऔಘͯ͠ίϯςφΛಈ͔ͯ͠ΈΔ

    View Slide

  46. ࣗ෼ͰJNBHFΛCVJME
    ✓%PDLFS)VCͰ഑෍͞Ε͍ͯΔΠϝʔδ
    ΛݩʹಠࣗʹΧελϚΠζͨ͠ΠϝʔδΛ࡞੒
    ͢Δ
    ✓%PDLFS)VCͰ഑෍͞Ε͍ͯΔ1)1ͷΠ
    ϝʔδ͸൚༻తͳ΋ͷͰɺྫ͑͹JOUM֦ு͸
    ೖ͍ͬͯͳ͍ͷͰɺ࠷ۙͷϑϨʔϜϫʔΫΛಈ
    ͔ͦ͏ͱ͢ΔͱɺಠࣗCVJME͢Δඞཁ͕͋Δ
    ✓ͦ͏͍ͬͨ৔߹ʹ࢖͏ͷ͕%PDLFSpMF

    View Slide

  47. Ξϯνύλʔϯ
    ✓طʹ7BHSBOUBOTJCMFͷ؀ڥ͕͋Δ৔߹ʹɺ
    %PDLFSΠϝʔδͷ࡞੒ʹ΋BOTJCMFͷϓϨΠϒοΫ
    Λ࢖͑ͳ͍͔ࢼ͢
    ✓͸·ΔͷͰ΍Ίͨ΄͏͕͍͍
    ✓গͳ͘ͱ΋ࢲ͸͸·ͬͨ
    ✓Ͳͬͪʹ໰୊͕͋ͬͯಈ͔ͳ͍ͷ͔Θ͔Βͳ͘ͳΔ
    ✓ૉ௚ʹ%PDLFSpMF͔Β࡞Δํ๏Λ࠷ॳʹशಘ͠
    ·͠ΐ͏
    ✓BOTJCMFͱͷ૊Έ߹ΘͤΛࢼ͢ͷ͸ͦͷޙͰ΋͍͍

    View Slide

  48. %PDLFSpMF
    ✓'30.36/"%%$01:౳ͷগ਺ͷ
    ίϚϯυΛ࢖ͬͯɺΠϝʔδΛ࡞੒͢Δखॱ
    Λࣔ͢ϑΝΠϧ
    ✓ඞཁͳ஌ࣝͱͯ͠͸TIεΫϦϓτΛॻ͘
    ײ͡
    ✓࣮ߦ͍ͯ͘͠ίϚϯυΛॱ൪ʹهड़ͯ͠
    ͍͘ײ͡
    ✓͜ͷϑΝΠϧΛݩʹΠϝʔδΛCVJME͢Δ

    View Slide

  49. %PDLFSpMFͱCVJMEํ๏
    FROM php:7.2-cli
    RUN pecl install xdebug-2.6.0 \
    && docker-php-ext-enable xdebug
    docker build -t kunit/php:7.2-cli .
    docker run -it --rm kunit/php:7.2-cli php -v
    docker run -it --rm php:7.2-cli php -v

    View Slide

  50. ͜Θ͘ͳ͍Αʂ
    ✓$JSDMF$*΋%PDLFS΋
    ͳΕΔͱͱͯ΋ศར
    ✓ಛʹ%PDLFSؔ࿈ͷٕज़
    ͸ࠓޙͲΜͲΜ஫໨౓͸্͕ͬ
    ͍ͯ͘ͱࢥ͏ͷͰ͜ΕΛػձ
    ʹ֮͑Δͷ͕͍͍ͱࢥ͏

    View Slide

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

    View Slide