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

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

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

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

Makoto Henmi

January 27, 2018
Tweet

More Decks by Makoto Henmi

Other Decks in Technology

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    w ҳݟ੣ ΁ΜΈ·͜ͱ

    w [email protected]
    w גࣜձࣾΫϨΦϑʔΨʢԻૉࡐൢചɺԻָί
    ϯςεταΠτӡӦʣ
    w ϑϩϯταʔόʔαΠυ৘γε
    w ࠓ೔ͷձ৔܎

    View Slide

  3. View Slide

  4. αʔϏεΠϯ౰࣌ͷߏ੒
    EC2(App) EC2(Batch)
    RDS

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. SQSɾSNSͷஔ͖׵͑
    • Localstack
    • https://github.com/localstack/localstack
    • ֤छawsαʔϏεͷ୅ସ͑αʔϏεΛఏڙ
    • s3͸minioͷํ͕࢖͍΍͍͢ͷͰࠓճ͸ະ࢖༻
    • SNS΋SQSͷ྆ํରԠͯ͘͠Ε͍ͯΔ
    • Ωϡʔ࡞੒͸ผ్ઃఆόονΩοΫ༻ͷΠϝʔδΛ࡞੒ͯ͠
    docker-compose up࣌ʹ࣮ߦ

    View Slide

  21. RDSͷஔ͖׵͑
    • ฐࣾMySQLͳͷͰMySQLͷdockerΠϝʔδΛ
    ࢖༻
    • ֤ࣗೖΕ͍ͯΔMySQLΛ࢖༻͢Δख΋͋ͬͨ
    ͕ઃఆ΍όʔδϣϯ͕όϥͭ͘Մೳੑ΋͋Δ
    ͷͰ౷Ұ

    View Slide

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

    View Slide

  23. όονΞϓϦͷରԠ
    • όονͷDockerΠϝʔδͷ࡞੒
    • DockerԽʹ൐͏ίʔυमਖ਼
    • SQSʹґଘͯ͠ΔͷͰSQSͷ४උ׬ྃΛ଴ͭίʔυΛ௥Ճ
    • ϝΠϯΞϓϦͱಉ࣌ʹىಈ͍ͨ͠
    • όονͷDockerϑΝΠϧΛϏϧυͯ͠ΠϝʔδΛ࡞੒͢ΔํࣜΛબ୒
    • ϦϙδτϦ͕ผͳͷͰgit submoduleΛར༻ͯ͠ϝΠϯΞϓϦͷϦϙ
    δτϦʹ௥Ճ

    View Slide

  24. RailsΞϓϦͷͱ͜Ζ

    View Slide

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

    View Slide

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

    View Slide

  27. Docker্Ͱಈ͔͠·͢

    View Slide

  28. DockerͰಈ͔͢
    • ެࣜʹRubyΠϝʔδ͕͋ΔͷͰͦΕΛ࢖༻
    • ϦϙδτϦϧʔτʹDockerϑΝΠϧΛஔ͍ͯΠϝʔ
    δϏϧυ
    • Πϝʔδ࡞੒࣌ʹbundle installΛߦ͏
    • ΞϓϦͷϧʔτΛίϯςφʹϚ΢ϯτͯ͠ίʔυม
    ߋ࣌ʹ͙͢ʹ൓өͰ͖ΔΑ͏ʹ͢Δ

    View Slide

  29. View Slide

  30. Docker-compose up
    Ͱ։ൃ؀ڥ্ཱ͕͕ͪΔ

    View Slide

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

    View Slide

  32. ·ͱΊ
    • docker-compose upͰඞཁͳ։ൃ؀ڥ্ཱ͕͕ͪΔͷ͸ศར
    • ֤ࣗͦΕͧΕͰઃఆ͢Δख͕ؒল͚ͨ
    • Railsͷ֤छίϚϯυΛ࣮ߦ͢Δͷ͕໘౗
    • ͍͍ͪͪdocker-compose run ~Λ࣮ߦ͢Δͷ͕ΊΜͲ͍͘͞
    • γΣϧεΫϦϓτΛ४උͯ͠লྗԽ
    • DockerΠϝʔδ΍S3ϩʔΧϧԽͰPCͷ༰ྔ͕ඞཁ

    View Slide

  33. ͓ΘΓ

    View Slide