Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Railsの開発環境にDockerを導入した話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Makoto Henmi
January 27, 2018
Technology
1.1k
2
Share
Railsの開発環境にDockerを導入した話
第21回 岡山Ruby, Ruby on Rails勉強会で話をしたRailsの開発環境にDockerを導入した話の資料です。
Makoto Henmi
January 27, 2018
More Decks by Makoto Henmi
See All by Makoto Henmi
ちいさくはじめるBacklog【令和最新版】
makowis
0
240
ちいさくはじめるBacklog
makowis
2
270
Firebase Hostingにシングルページアプリケーションをデプロイしてみよう #gbdaitokai
makowis
1
860
ノベルティのパッケージング
makowis
1
400
スパロボ遍歴
makowis
1
120
昔懐かしいインターネットの風物詩を最近の技術で作る話
makowis
1
4.1k
5分でわかるホワイトボードチャレンジ
makowis
1
880
ぼくらのかんがえたさいきょうのリモート雑談環境 #oso2018
makowis
0
1.9k
朝会をやめた話
makowis
0
5.8k
Other Decks in Technology
See All in Technology
Ruby::Boxでできること、Refinementsでできること
joker1007
2
190
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
710
地元にいないローカルオーガナイザーの立ち回り
uvb_76
1
410
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
160
Spring Boot における AOT Cache 活用テクニックと 起動時間改善事例
ntt_dsol_java
0
180
Unlocking the Apps
pimterry
0
150
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
2
510
先取りMaven4 ~16年ぶりのメジャーアップデート、その進化とは?~
ogiwarat
0
110
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
150
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.8k
Datadog 認定試験の概要と対策
uechishingo
0
210
コードレビューを制するチームがソフトウェアデリバリーのフローを制す / Beyond Code Review: Distributing Its Responsibilities Across the SDLC
mtx2s
3
560
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
220
AI: The stuff that nobody shows you
jnunemaker
PRO
7
670
It's Worth the Effort
3n
188
29k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Accessibility Awareness
sabderemane
1
130
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
ラッコキーワード サービス紹介資料
rakko
1
3.5M
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
540
Utilizing Notion as your number one productivity tool
mfonobong
4
310
How to build a perfect <img>
jonoalderson
1
5.5k
Transcript
Rails։ൃڥʹ DockerΛಋೖͨ͠ ୈ21ճ ԬࢁRuby, Ruby on Railsษڧձ ҳݟ(@mako_wis)
ࣗݾհ w ҳݟ ΜΈ·͜ͱ w 5XJUUFS!NBLP@XJT w גࣜձࣾΫϨΦϑʔΨʢԻૉࡐൢചɺԻָί ϯςεταΠτӡӦʣ
w ϑϩϯταʔόʔαΠυγε w ࠓͷձ
None
αʔϏεΠϯ࣌ͷߏ EC2(App) EC2(Batch) RDS
S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS
S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS CloudSearch
S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS CloudSearch SQS
S3 ૿͑ΔawsαʔϏε EC2(App) EC2(Batch) RDS CloudSearch SQS SNS
͜͜Ͱͪΐͬͱ͕
ൃੜ͍ͯͨ͠ • ֤ࣗͦΕͧΕͰઃఆͯͨ͠ͷͰൿͷλϨԽ • S3Λ։ൃ༻ʹڞ௨ͷόέοτΛݟ͍ͯͨΓ͠ ͯσʔλͷॏෳ͕ൃੜ • Ϛγϯങ͍ସ͑ͱ͔ͰڥߏஙΓ͠ͷ ߹ʹ͕͔͔࣌ؒΔ
ڥߏங͕ϘτϧωοΫʹ
ڥߏஙΛ؆୯ʹͯ͠ޮUP
ରॲํ๏ • ϩʔΧϧʹAWSସαʔϏεΛར༻ͯ͠ຊ൪ ͱಉͷڥΛߏங • ։ൃऀຖʹຊ൪ͱಉͷڥΛAWS্ʹߏங
ରॲํ๏ • ϩʔΧϧʹAWSସαʔϏεΛར༻ͯ͠ຊ൪ ͱಉͷڥΛߏங • ։ൃऀຖʹຊ൪ͱಉͷڥΛAWS্ʹߏங ࠓճͬͪ͜
DockerͰϩʔΧϧʹڥߏங
ࠓճͷํ • DockerΛར༻ͯ͠ϩʔΧϧʹ։ൃڥΛߏங • खܰʹڥΛ্ཱ͍ͪ͛ͨͷͰdocker- composeͰίϯςφΛཧ • ସ͑αʔϏε͕ແ͍ͷผ్ରࡦߟ͑Δ
RailsΞϓϦ Rubyόον S3 MySQL SQSɾSNS SQSɾSNSॳظԽ
RailsΞϓϦҎ֎ͷͱ͜Ζ
S3ͷஔ͖͑ • MinioΛ༻ • https://github.com/minio/minio • dockerΠϝʔδΛར༻ͯ͠ӬଓԽ͕༰қ • σΟϨΫτϦ=όέοτͱͯ͠Έͳͯ͘͠ΕΔ ͷͰόέοτ࡞ࡁͰͰ͖Δ
SQSɾSNSͷஔ͖͑ • Localstack • https://github.com/localstack/localstack • ֤छawsαʔϏεͷସ͑αʔϏεΛఏڙ • s3minioͷํ͕͍͍͢ͷͰࠓճະ༻ •
SNSSQSͷ྆ํରԠͯ͘͠Ε͍ͯΔ • Ωϡʔ࡞ผ్ઃఆόονΩοΫ༻ͷΠϝʔδΛ࡞ͯ͠ docker-compose up࣌ʹ࣮ߦ
RDSͷஔ͖͑ • ฐࣾMySQLͳͷͰMySQLͷdockerΠϝʔδΛ ༻ • ֤ࣗೖΕ͍ͯΔMySQLΛ༻͢Δख͋ͬͨ ͕ઃఆόʔδϣϯ͕όϥͭ͘Մೳੑ͋Δ ͷͰ౷Ұ
CloudSearchɾɾɾ • ϕʔλ൛͔ͩΒͳͷ͔ସ͑αʔϏε͕ΠϚΠν • ݩʑΫϥυαʔνͷઃఆ͕ͳ͔ͬͨΒDBͷ ݕࡧʹΓସ͑ΔϩδοΫ͕͋ͬͨͷͰͦΕΛ ར༻ • ʢͦͷ͏ͪElasticSearchʹΓ͑Δ͔͠Ε ͳ͍ͷͰҰ୴ஔ͍͓ͯ͘
όονΞϓϦͷରԠ • όονͷDockerΠϝʔδͷ࡞ • DockerԽʹ͏ίʔυमਖ਼ • SQSʹґଘͯ͠ΔͷͰSQSͷ४උྃΛͭίʔυΛՃ • ϝΠϯΞϓϦͱಉ࣌ʹىಈ͍ͨ͠ •
όονͷDockerϑΝΠϧΛϏϧυͯ͠ΠϝʔδΛ࡞͢ΔํࣜΛબ • ϦϙδτϦ͕ผͳͷͰgit submoduleΛར༻ͯ͠ϝΠϯΞϓϦͷϦϙ δτϦʹՃ
RailsΞϓϦͷͱ͜Ζ
΄ΜͱDockerͷ֎ʹ ग़͔ͨͬͨ͠ɾɾɾ
Docker͔Βग़ͤͳ͔ͬͨཧ༝ • Rubyόονଆ͔ΒRailsΞϓϦʹ௨৴ͷඞཁ͕͋Γ • Dockerίϯςφଆ͔ΒϗετOSͷIPΛऔಘ͢Δํ๏͕ ϗετOSଆͰ·ͪ·ͪ • MacͱLinuxҰॹͬΆ͍͚ͲWindows͕ɾɾɾ • ϗετOSଆͰRailsΛىಈ͢ΔͱRubyͷόονଆ͔Β
Rails௨৴Ͱ͖ͳ͍
Docker্Ͱಈ͔͠·͢
DockerͰಈ͔͢ • ެࣜʹRubyΠϝʔδ͕͋ΔͷͰͦΕΛ༻ • ϦϙδτϦϧʔτʹDockerϑΝΠϧΛஔ͍ͯΠϝʔ δϏϧυ • Πϝʔδ࡞࣌ʹbundle installΛߦ͏ •
ΞϓϦͷϧʔτΛίϯςφʹϚϯτͯ͠ίʔυม ߋ࣌ʹ͙͢ʹөͰ͖ΔΑ͏ʹ͢Δ
None
Docker-compose up Ͱ։ൃڥ্ཱ͕͕ͪΔ
DockerԽͰਏ͍ͱ͜Ζ • Gemfileͷมߋ࣌ʹDockerΠϝʔδͷϏϧυ͕ඞཁ • PCʹΑͬͯը໘ͷද͕ࣔҟৗʹ͍ • RailsίϚϯυ࣮ߦ͕DockerΛհ͢ͷͰͯ͘ਏ͍ • rakeίϚϯυͷ࣮ߦΛύΠϓͰड͚औΕͳ͍ͷͰਏ ͍
·ͱΊ • docker-compose upͰඞཁͳ։ൃڥ্ཱ͕͕ͪΔͷศར • ֤ࣗͦΕͧΕͰઃఆ͢Δख͕ؒল͚ͨ • Railsͷ֤छίϚϯυΛ࣮ߦ͢Δͷ͕໘ • ͍͍ͪͪdocker-compose
run ~Λ࣮ߦ͢Δͷ͕ΊΜͲ͍͘͞ • γΣϧεΫϦϓτΛ४උͯ͠লྗԽ • DockerΠϝʔδS3ϩʔΧϧԽͰPCͷ༰ྔ͕ඞཁ
͓ΘΓ