Railsの開発環境にDockerを導入した話

 Railsの開発環境にDockerを導入した話

第21回 岡山Ruby, Ruby on Rails勉強会で話をしたRailsの開発環境にDockerを導入した話の資料です。

D8becf939cfb6d977394016667eca429?s=128

Makoto Henmi

January 27, 2018
Tweet

Transcript

  1. Rails։ൃ؀ڥʹ DockerΛಋೖͨ͠࿩ ୈ21ճ ԬࢁRuby, Ruby on Railsษڧձ ҳݟ੣(@mako_wis)

  2. ࣗݾ঺հ w ҳݟ੣ ΁ΜΈ·͜ͱ  w 5XJUUFS!NBLP@XJT w גࣜձࣾΫϨΦϑʔΨʢԻૉࡐൢചɺԻָί ϯςεταΠτӡӦʣ

    w ϑϩϯταʔόʔαΠυ৘γε w ࠓ೔ͷձ৔܎
  3. None
  4. αʔϏεΠϯ౰࣌ͷߏ੒ EC2(App) EC2(Batch) RDS

  5. S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS

  6. S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS CloudSearch

  7. S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS CloudSearch SQS

  8. S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS CloudSearch SQS SNS

  9. ͜͜Ͱͪΐͬͱ໰୊͕

  10. ൃੜ͍ͯͨ͠໰୊ • ֤ࣗͦΕͧΕͰઃఆͯͨ͠ͷͰൿ఻ͷλϨԽ • S3Λ։ൃ༻ʹڞ௨ͷόέοτΛݟ͍ͯͨΓ͠ ͯσʔλͷॏෳ͕ൃੜ • Ϛγϯങ͍ସ͑ͱ͔Ͱ؀ڥߏங΍Γ௚͠ͷ৔ ߹ʹ͕͔͔࣌ؒΔ

  11. ؀ڥߏங͕ϘτϧωοΫʹ

  12. ؀ڥߏஙΛ؆୯ʹͯ͠ޮ཰UP

  13. ରॲํ๏ • ϩʔΧϧʹAWS୅ସαʔϏεΛར༻ͯ͠ຊ൪ ͱಉ౳ͷ؀ڥΛߏங • ։ൃऀຖʹຊ൪ͱಉ౳ͷ؀ڥΛAWS্ʹߏங

  14. ରॲํ๏ • ϩʔΧϧʹAWS୅ସαʔϏεΛར༻ͯ͠ຊ൪ ͱಉ౳ͷ؀ڥΛߏங • ։ൃऀຖʹຊ൪ͱಉ౳ͷ؀ڥΛAWS্ʹߏங ࠓճ͸ͬͪ͜

  15. DockerͰϩʔΧϧʹ؀ڥߏங

  16. ࠓճͷํ਑ • DockerΛར༻ͯ͠ϩʔΧϧʹ։ൃ؀ڥΛߏங • खܰʹ؀ڥΛ্ཱ͍ͪ͛ͨͷͰdocker- composeͰίϯςφΛ؅ཧ • ୅ସ͑αʔϏε͕ແ͍΋ͷ͸ผ్ରࡦߟ͑Δ

  17. RailsΞϓϦ Rubyόον S3 MySQL SQSɾSNS SQSɾSNSॳظԽ

  18. RailsΞϓϦҎ֎ͷͱ͜Ζ

  19. S3ͷஔ͖׵͑ • MinioΛ࢖༻ • https://github.com/minio/minio • dockerΠϝʔδΛར༻ͯ͠΋ӬଓԽ͕༰қ • σΟϨΫτϦ=όέοτͱͯ͠Έͳͯ͘͠ΕΔ ͷͰόέοτ࡞੒ࡁͰ഑෍Ͱ͖Δ

  20. SQSɾSNSͷஔ͖׵͑ • Localstack • https://github.com/localstack/localstack • ֤छawsαʔϏεͷ୅ସ͑αʔϏεΛఏڙ • s3͸minioͷํ͕࢖͍΍͍͢ͷͰࠓճ͸ະ࢖༻ •

    SNS΋SQSͷ྆ํରԠͯ͘͠Ε͍ͯΔ • Ωϡʔ࡞੒͸ผ్ઃఆόονΩοΫ༻ͷΠϝʔδΛ࡞੒ͯ͠ docker-compose up࣌ʹ࣮ߦ
  21. RDSͷஔ͖׵͑ • ฐࣾMySQLͳͷͰMySQLͷdockerΠϝʔδΛ ࢖༻ • ֤ࣗೖΕ͍ͯΔMySQLΛ࢖༻͢Δख΋͋ͬͨ ͕ઃఆ΍όʔδϣϯ͕όϥͭ͘Մೳੑ΋͋Δ ͷͰ౷Ұ

  22. CloudSearchɾɾɾ • ϕʔλ൛͔ͩΒͳͷ͔୅ସ͑αʔϏε͕ΠϚΠν • ݩʑΫϥ΢υαʔνͷઃఆ͕ͳ͔ͬͨΒDB΁ͷ ݕࡧʹ੾Γସ͑ΔϩδοΫ͕͋ͬͨͷͰͦΕΛ ར༻ • ʢͦͷ͏ͪElasticSearchʹ৐Γ׵͑Δ͔΋͠Ε ͳ͍ͷͰҰ୴ஔ͍͓ͯ͘

  23. όονΞϓϦͷରԠ • όονͷDockerΠϝʔδͷ࡞੒ • DockerԽʹ൐͏ίʔυमਖ਼ • SQSʹґଘͯ͠ΔͷͰSQSͷ४උ׬ྃΛ଴ͭίʔυΛ௥Ճ • ϝΠϯΞϓϦͱಉ࣌ʹىಈ͍ͨ͠ •

    όονͷDockerϑΝΠϧΛϏϧυͯ͠ΠϝʔδΛ࡞੒͢ΔํࣜΛબ୒ • ϦϙδτϦ͕ผͳͷͰgit submoduleΛར༻ͯ͠ϝΠϯΞϓϦͷϦϙ δτϦʹ௥Ճ
  24. RailsΞϓϦͷͱ͜Ζ

  25. ΄Μͱ͸Dockerͷ֎ʹ ग़͔ͨͬͨ͠ɾɾɾ

  26. Docker͔Βग़ͤͳ͔ͬͨཧ༝ • Rubyόονଆ͔ΒRailsΞϓϦʹ௨৴ͷඞཁ͕͋Γ • Dockerίϯςφଆ͔ΒϗετOSͷIPΛऔಘ͢Δํ๏͕ ϗετOSଆͰ·ͪ·ͪ • MacͱLinux͸ҰॹͬΆ͍͚ͲWindows͕ɾɾɾ • ϗετOSଆͰRailsΛىಈ͢ΔͱRubyͷόονଆ͔Β

    Rails΁௨৴Ͱ͖ͳ͍
  27. Docker্Ͱಈ͔͠·͢

  28. DockerͰಈ͔͢ • ެࣜʹRubyΠϝʔδ͕͋ΔͷͰͦΕΛ࢖༻ • ϦϙδτϦϧʔτʹDockerϑΝΠϧΛஔ͍ͯΠϝʔ δϏϧυ • Πϝʔδ࡞੒࣌ʹbundle installΛߦ͏ •

    ΞϓϦͷϧʔτΛίϯςφʹϚ΢ϯτͯ͠ίʔυม ߋ࣌ʹ͙͢ʹ൓өͰ͖ΔΑ͏ʹ͢Δ
  29. None
  30. Docker-compose up Ͱ։ൃ؀ڥ্ཱ͕͕ͪΔ

  31. DockerԽͰਏ͍ͱ͜Ζ • Gemfileͷมߋ࣌ʹDockerΠϝʔδͷϏϧυ͕ඞཁ • PCʹΑͬͯ͸ը໘ͷද͕ࣔҟৗʹ஗͍ • RailsίϚϯυ࣮ߦ͕DockerΛհ͢ͷͰ஗ͯ͘ਏ͍ • rakeίϚϯυͷ࣮ߦΛύΠϓͰड͚औΕͳ͍ͷͰਏ ͍

  32. ·ͱΊ • docker-compose upͰඞཁͳ։ൃ؀ڥ্ཱ͕͕ͪΔͷ͸ศར • ֤ࣗͦΕͧΕͰઃఆ͢Δख͕ؒল͚ͨ • Railsͷ֤छίϚϯυΛ࣮ߦ͢Δͷ͕໘౗ • ͍͍ͪͪdocker-compose

    run ~Λ࣮ߦ͢Δͷ͕ΊΜͲ͍͘͞ • γΣϧεΫϦϓτΛ४උͯ͠লྗԽ • DockerΠϝʔδ΍S3ϩʔΧϧԽͰPCͷ༰ྔ͕ඞཁ
  33. ͓ΘΓ