怠慢なあなたのためのDocker Compose / Docker Compose for Lazy people

怠慢なあなたのためのDocker Compose / Docker Compose for Lazy people

まとめ
1. Docker Composeを利用すればお手軽に開発環境構築ができる
・複数のコンテナをコマンド1つで起動・停止が可能
・コマンド実行時にコンテナ間の依存関係を意識する必要がない
・コンテナの構成情報はCI/CDにもそのまま利用できる
2. 怠慢な心を持ち続ける
・手作業で繰り返しの作業(トイル)をより早くより効率的に自動化できないかを日々自問する
・プログラマーの三大美徳「怠慢・短気・傲慢」はソフトウェアに向けるべきであり、決して人に向けない
・自作するのではなくまず探す

Quick Start: Compose and Laravel : https://github.com/jumpyoshim/quickstart-compose-and-laravel

ARCANA Meetup #43 : https://s-arcana.connpass.com/event/102961/

03f5fe5a70c0e79f07a5f88e2e42781c?s=128

Jumpei Yoshimura

October 25, 2018
Tweet

Transcript

  1. ଵຫͳ͋ͳͨͷͨΊͷ %PDLFS$PNQPTF "3$"/".FFUVQ !KVNQZPTIJN+VNQFJ:PTIJNVSB

  2. ͓લ୭Α • ٢ଜ५ฏʢ@jumpyoshimʣ • גࣜձࣾΞΠϦοδॴଐ • αʔόʔαΠυΤϯδχΞ • εϚϗΞϓϦͷόοΫΤϯυ։ൃ •

    Python, Django, GitLab, Docker, AWS
  3. ϓϩάϥϚʔͷࡾେඒಙ ଵຫʢ-B[JOFTTʣ ୹ؾʢ*NQBUJFODFʣ ၗຫʢ)VCSJTʣ ʮϓϩάϥϚʔʹ͸ɺ࣍ͷඒಙ͕ઈରʹඞཁͰ͢ɻ͜ͷඒಙͷҰͭͰ΋ܽ͘ਓ͸ɺ ϓϩάϥϚʔͱͳͬͯ͸͍͚·ͤΜɻ·ͨɺ͜ΕΒͷඒಙΛ͍͍ܽͯΔʹ΋ؔΘ ΒͣϓϩάϥϚʔͱ͍͏৬ۀʹब͍ͯ͠·ͬͨਓ͸ɺࠓ͙͢స৬Λߟ͑·͠ΐ͏ɻ ͦΕ͘Β͍ॏཁͳඒಙͰ͢ɻʯ https://tech.nikkeibp.co.jp/it/article/Watcher/20061005/250057/ PerlͷੜΈͷ਌ϥϦʔɾ΢Υʔϧࢯ͕ఆٛ

  4. ଵຫʢ-B[JOFTTʣ ʮશମͷ࿑ྗΛݮΒͨ͢ΊʹखؒΛ੯͠·ͳ͍ؾ࣭ɻ͜ͷؾ࣭ͷ࣋ͪओ͸ɺ໾ཱ ͭϓϩάϥϜΛॻ͍ͯΈΜͳͷۤ࿑ΛݮΒͨ͠Γɺಉ࣭͡໰ʹԿ౓΋౴͑ͳͯ͘ ΋͍͍Α͏ʹจॻΛॻ͍ͨΓ͢ΔɻΑͬͯɺϓϩάϥϚʔͷୈҰͷඒಙͰ͋Δɻʯ https://tech.nikkeibp.co.jp/it/article/Watcher/20061005/250057/ ὎ίϯςφԽɺ$*$% ΞϓϦέʔγϣϯ։ൃʹ͓͚Δ

  5. ίϯςφٕज़ΛͱΓ·͘ಈ޲ ʮαʔϏεͷίϯςφԽͱ͍͏ͷ͸͜͜਺೥ͷWebۀք ͷҰେτϨϯυͱ͍͏͔׬શʹҰൠԽ͖͍ͯͯ͠·͢ɻʯ ʮϩʔΧϧ؀ڥͰͷςετ΍ɺCI্Ͱͷςετʹؔͯ͠ ΋DockerΛ࢖༻͢Δ͜ͱ͕౰વͷྲྀΕͷΑ͏ʹͳ͖ͬͯ ͍ͯ·͢ɻʯ ʮίϯςφԽͨ͠ΞϓϦέʔγϣϯΛ׆༻͢ΔΫϥ΢ υωΠςΟϒͷྲྀΕ͕ਐߦ͍ͯ͠·͢ɻʢதུʣΠϯ ϑϥΛҙࣝͤͣɺιϑτ΢ΣΞ΍αʔϏεͷ։ൃʹू த͢Δ͜ͱ͕Ͱ͖ɺ݁Ռͱͯ͠ߴ඼࣭ͳαʔϏεΛఏ

    ڙͰ͖Δػձ͕ߴ·Γͭͭ͋Δͱ͍͑ΔͰ͠ΐ͏ɻʯ ʮ2018೥ͷ࠷ઌ୺όοΫΤϯυΤϯδχΞʹ ඞཁͳεΩϧʹ͍ͭͯߟ͑ͯΈ·ͨ͠ɻʯ 2330͍͍Ͷʢ2018/10/25࣌఺ʣ https://qiita.com/poly_soft/items/7cce0fb45195575921ae
  6. ࠓ೔࿩͢͜ͱɾ࿩͞ͳ͍͜ͱ ʮDocker͸։ൃ؀ڥͷߏங͚ͩͰ͸ͳ͘ɺຊ൪؀ڥ ͷσϓϩΠʹ࢖༻͢ΔͱՁ஋͕ग़ͯ͘Δɻ։ൃ࣌ͷ ؀ڥ෼཭͚ͩʹ࢖༻͢ΔͱΦʔόʔϔου΋େ͖͘ɺ ຊ൪؀ڥͱҰக͠ͳ͍ͱ͍͏ܽ఺Λ๊͑ͯ͠·͏ʯ • Docker ComposeΛར༻ͨ͠։ൃ؀ڥߏங ࿩͢͜ͱ ࿩͞ͳ͍͜ͱ

    • Docker ComposeΛར༻ͨ͠σϓϩΠ • ίϯςφͷCI/CD ※ ։ൃ؀ڥͷΈΛίϯςφԽ͢Δ͜ͱ͸Ұൠతʹλϒʔͱ͞Ε͍ͯ·͢ɻ
  7. ໨࣍ 3&"%.&Λൺֱ͢Δ %PDLFS$PNQPTFΛར༻ͨ͠։ൃ؀ڥߏஙํ๏ ·ͱΊ ɾ7BHSBOU ɾ%PDLFS ɾ%PDLFS$PNQPTF

  8. 7BHSBOUΛ࢖͏ͱ͜͏ͳΔ $ vagrant init dev-box $ vagrant up README.md $

    mysql -u root > CREATE DATABASE db_dev; $ sudo apt update $ sudo apt install mysql-server python-pip python-dev $ git clone https://github.com/… $ ./manage.py runserver 0.0.0.0:8000 ʢ৬ਓͷखʹΑΔ৬ਓܳʣ ʢ৬ਓͷखʹΑΔ৬ਓܳʣ ʢ৬ਓͷखʹΑΔ৬ਓܳʣ • ৬ਓେ๩͠ • େ఍υΩϡϝϯτ௨Γʹ͍͔ͳ͍ • ຊདྷ΍Γ͍ͨ͜ͱʢ։ൃʣʹ࣌ؒΛׂ͚ͳ͍ ͔֬ʹಉ͡։ൃ؀ڥ͸༻ҙͰ͖Δ͕…
  9. %PDLFSΛ࢖͏ͱ͜͏ͳΔ $ cp .env.example .env $ docker build -t db-dev

    database/ $ docker run —name=db —env-file=.env -itd db-dev $ docker run —name=web —env-file=.env -itd -p 8000:80 nginx:latest $ docker build -t app-dev app/ $ docker run —name=app —env-file=.env -itd app-dev README.md • ίϯϙʔωϯτ͕૿͑Δͨͼʹ build, run ͕ඞཁʹͳΔ • ґଘؔ܎Λҙࣝ͢Δඞཁ͕͋Δʢ࣮ߦॱ͕ҧ͏ͱ͏·͍͔͘ͳ͍έʔε΋…ʣ • ҰͭҰͭͷίϯςφΛ؅ཧ͢Δͷ͸େม ൺֱత؆୯ʹ؀ڥߏஙͰ͖ΔΑ͏ʹͳͬͨ΋ͷͷ…
  10. %PDLFS$PNQPTFΛ࢖͏ͱ͜͏ͳΔ $ cp .env.example .env $ docker-compose up README.md •

    ෳ਺ͷίϯςφΛίϚϯυ1ͭͰىಈͰ͖Δʢ΋ͪΖΜఀࢭ΋ʣ • ίϚϯυ࣮ߦ࣌ʹίϯςφؒͷґଘؔ܎Λҙࣝ͢Δඞཁ͕ͳ͍ • ίϯςφͷߏ੒৘ใ͸CI/CDʹ΋ͦͷ··ར༻Ͱ͖Δ
  11. %PDLFS$PNQPTFΛ༻͍ͨ։ൃ؀ڥߏஙํ๏ ؀ڥม਺ϑΝΠϧͷ࡞੒ %PDLFSpMFͷ࡞੒ EPDLFSDPNQPTFZNMͷ࡞੒ https://docs.docker.com/compose/django/ Quickstart: Compose and Django ࣮ࡍͷαϯϓϧΛ֬ೝͯ͠Έ·͠ΐ͏ʂ

    ※ લఏͱͯ͠ɺઃఆ৘ใΛ؀ڥม਺Խ͓ͯ͘͠ඞཁ͕͋Γ·͢ɻ
  12. -BSBWFM#BTJD5BTL-JTU https://github.com/jumpyoshim/quickstart-basic -BSBWFMͷνϡʔτϦΞϧΞϓϦέʔγϣϯΛ%PDLFS$PNQPTFԽͯ͠Έͨ https://laravel.com/docs/5.2/quickstart

  13. ·ͱΊ https://tech.nikkeibp.co.jp/it/article/Watcher/20061005/250057/ %PDLFS$PNQPTFΛར༻͢Ε͹͓खܰʹ։ൃ؀ڥߏங͕Ͱ͖Δ ଵຫͳ৺Λ࣋ͪଓ͚Δ • ෳ਺ͷίϯςφΛίϚϯυ1ͭͰىಈɾఀࢭ͕Մೳ • ίϚϯυ࣮ߦ࣌ʹίϯςφؒͷґଘؔ܎Λҙࣝ͢Δඞཁ͕ͳ͍ • ίϯςφͷߏ੒৘ใ͸CI/CDʹ΋ͦͷ··ར༻Ͱ͖Δ

    • ख࡞ۀͰ܁Γฦ͠ͷ࡞ۀʢτΠϧʣΛΑΓૣ͘ΑΓޮ཰తʹͰ͖ͳ͍͔Λ೔ʑࣗ໰͢Δ • ʮଵຫɾ୹ؾɾၗຫʯͷਫ਼ਆ͸ਓʹ޲͚Δ΂͖΋ͷͰ͸ͳ͍ʢιϑτ΢ΣΞʹ޲͚Δʣ • ࣗ࡞͢ΔͷͰ͸ͳ͘·ͣ͸୳͢