Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dockerで作るRails実行環境
Search
Tetsushi Hasesaku
November 09, 2018
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dockerで作るRails実行環境
Tetsushi Hasesaku
November 09, 2018
More Decks by Tetsushi Hasesaku
See All by Tetsushi Hasesaku
コードリファクタリングの手引き
hare8563
2
700
Vagrantで作るRails開発環境構築
hare8563
0
320
VagrantとDockerで作る、ポータブル開発環境
hare8563
2
830
Other Decks in Technology
See All in Technology
パッチ更新でterraform initが落ちた日
grimoh
1
140
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
Running Kotlin + Quarkus with Lambda
nealle
1
3.8k
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
560
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
260
Optunaの最新リリースv5.0について
pfn
PRO
0
120
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
5k
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
340
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
今さら理解するウェブフォントver.2026
takanorip
3
840
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
300
Featured
See All Featured
Believing is Seeing
oripsolob
1
240
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
The Limits of Empathy - UXLibs8
cassininazir
2
720
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Producing Creativity
orderedlist
PRO
348
41k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Transcript
%PDLFSͰ࡞Δ3BJMT࣮ߦڥ ࠤٱ࢜
w ࠤٱ࢜ w ϐΫγϒגࣜձࣾ w ͳΜͰ͢ΔΤϯδχΞ w αʔόαΠυ 3VCZ 1)1
$ w ϑϩϯτΤϯυ 3FBDU 5ZQFTDSJQU w ڥߏங "84 7BHSBOU %PDLFS w ςετ 4FMFOJVN "QQJVN w 6OJUZ w झຯϓϩάϥϛϯάͱ$(࡞ ࣗݾհ
%PDLFSͱ
%PDLFS w ίϯςφܕԾڥΛ࡞ɺɺ ࣮ߦ͢ΔͨΊͷϓϥοτϑΥʔϜ w ϛυϧΣΞͷΠϯετʔϧ֤छ ڥઃఆΛίʔυԽ͠ɺͦͷ্ͰΞ ϓϦέʔγϣϯΛ࣮ߦͰ͖Δ
ίϯςφܕԾڥ
ίϯςφܕԾڥɹ w ϗετ04 -JOVY ͱΧʔωϧ෦Λڞ༗ͨ͠Ծڥ w Χʔωϧ෦͕ڞ༗͞ΕΔͨΊಉҰͷ04 -JOVY ্Ͱ͔͠ಈ͔͢ ͜ͱ͕Ͱ͖ͳ͍
w ैདྷͷԾڥ ϗετܕ ͱҧ͍ɺԾϚγϯ෦ΛͨͯΔඞཁ͕ ͳ͍ͨΊɺΦʔόϔου͕গͳ͍
None
3BJMT
3BJMT w 3VCZPO3BJMT w 3VCZͰ͏αʔόαΠυϑϨʔϜ ϫʔΫ w .7$ΞʔΩςΫνϟ w lઃఆΑΓنz
lಉ͜͡ͱΛ܁Γ ฦ͞ͳ͍Λҙࣝͨ͠ϓϩάϥϛϯ άελΠϧ
%PDLFSͷϝϦοτ
w ࣮ߦڥͷίʔυԽʹΑΔόʔδϣϯཧͱ༰қͳ w εΫϥοϓϏϧυ w ΞϓϦέʔγϣϯ࣮ߦͷ࠶ݱੑ
Ͱɺ࡞͍͖ͬͯ·͠ΐ͏
%PDLFSͷ։ൃڥΛߏங w 7JSUVBM#PYͷΠϯετʔϧ w IUUQTXXXPSBDMFDPNUFDIOFUXPSLTFSWFSTUPSBHFWJSUVBMCPY EPXOMPBETJOEFYIUNM TT4PVSDF4JUF*EPUOKQa w 7BHSBOUͷΠϯετʔϧ w
IUUQTXXXWBHSBOUVQDPN w 7BHSBOUڥͷΫϩʔϯ w IUUQTHJUIVCDPN)BSF4Q[%PDLFS
%PDLFSͷ։ൃڥΛߏங • vagrant upͰ7JSUVBM#PY্ʹ$PSF04ڥΛ࡞Δ w ్தɺύεϫʔυ͕ฉ͔ΕͨΒɺϗετϚγϯͷϩάΠϯʹͬͯ ͍ΔύεϫʔυΛೖྗ • vagrant sshͰԾϚγϯʹϦϞʔτଓ
%PDLFSΛ৮ͬͯΈΑ͏
%PDLFSΛ৮ͬͯΈΑ͏ • docker run -it ruby:2.5.3 /bin/bash
%PDLFSΛ৮ͬͯΈΑ͏ • docker run -it ruby:2.5.3 /bin/bash • docker run
%PDLFSίϯςφͷىಈ • -itΦϓγϣϯlJzzJOUFSBDUJWFz lUzzUUZz • ruby:2.5.3 ࣮ߦ͢Δ%PDLFSΠϝʔδ • /bin/bashίϯςφ্Ͱ࣮ߦ͢ΔίϚϯυ
docker run -it ruby:2.5.3 /bin/bash
Ͱɺ3BJMTͷڥΛߏங͢Δͷʹඞཁͳ ύοέʔδΛΠϯετʔϧ͍͖ͯ͠·͢
curl -sL https://deb.nodesource.com/setup_10.x | bash - apt-get update -qq
apt-get install -y build-essential libpq-dev nodejs npm install -g yarn mkdir -p /usr/src/rails-server
ऴΘͬͨΒɺFYJUͰऴྃͯ͘͠ ͍ͩ͞
exit
%PDLFSΛ৮ͬͯΈΑ͏ w εφοϓγϣοτ͕͋Δ͔֬ೝͯ͠Έ·͠ΐ͏ • docker ps -a
ఀࢭதͷίϯςφ͔Β৽͍͠Π ϝʔδΛ࡞Γ·͢
%PDLFSΛ৮ͬͯΈΑ͏ • docker commit 7e7d0dcf9978 prepare-rails • docker commit: ίϯςφ͔Β৽͍͠ΠϝʔδΛ࡞
• 7e7d0dcf9978: ϕʔεͱͳΔίϯςφID • prepare-rails: ࡞͢ΔΠϝʔδ໊
docker commit
εφοϓγϣοτ͏͍Βͳ ͍ͷͰফ͠·͠ΐ͏
%PDLFSΛ৮ͬͯΈΑ͏ • docker rm 7e7d0dcf9978 • docker rm: ίϯςφΛআ͢Δ •
7e7d0dcf9978: আ͢ΔίϯςφID
͜ΕͰɺ%PDLFSΠϝʔδ͕Ͱ͖ ͕͋Γ·ͨ͠
͜ͷΠϝʔδΛڞ༗͢Εɺͩ ΕͰಉ͡ίϯςφΛ࡞Ε·͢
Ͱʜ
ϑΝΠϧαΠζ͕Ͱ͔͍͔Βɺ͜ ΕΛ1VTI1VMM͢Δӡ༻͖͍ͭ
ͳʹΑΓɺόʔδϣϯཧ͠ʹ ͍͘
%PDLFSpMFͷग़൪Ͱ͢
%PDLFSpMFͷ࡞
%PDLFSpMFͷ࡞ ҎԼɺ%PDLFSpMFΛ)0.&TIBSFSBJMTBQQ্ʹ࡞ ͜ΕΛͱʹɺΠϝʔδΛϏϧυ͠·͢ FROM prepare-rails WORKDIR /usr/src/rails-server COPY Gemfile
/usr/src/rails-server/Gemfile COPY Gemfile.lock /usr/src/rails-server/Gemfile.lock RUN bundle install
%PDLFSpMFͷ࡞ • docker build —-tag author/rails-server:latest . • docker build:
Dockerfile͔ΒΠϝʔδΛ࡞ • —-tag: ΠϝʔδʹλάΛ͚ͭΔ • author/rails-server:latest: λά໊ • . : Dockerfile͕͋ΔσΟϨΫτϦ
Ͱɺ͜ͷ%PDLFSΠϝʔδΛͬͯ 3BJMTΞϓϦέʔγϣϯΛ࡞Γ·͠ΐ͏
3BJMTΞϓϦέʔγϣϯߏங
3BJMTΞϓϦέʔγϣϯߏங EPDLFSSVOSNW18%VTSTSDSBJMTTFSWFSXVTSTSDSBJMT TFSWFSBVUIPSSBJMTTFSWFSMBUFTUCJOCBTIDCVOEMFFYFDSBJMT OFXNZBQQ5GXFCQBDLSFBDUEBUBCBTFNZTRMTLJQDP⒎FF TLJQTQSPDLFUTDENZBQQCVOEMFFYFDSBLF XFCQBDLFSJOTUBMMCVOEMFFYFDSBLFXFCQBDLFSJOTUBMMSFBDU CVOEMFFYFDSBLFXFCQBDLFSJOTUBMMUZQFTDSJQU ҎԼɺ)0.&TIBSFSBJMTBQQ্Ͱ࣮ߦ
3BJMTΞϓϦέʔγϣϯߏங EPDLFSSVOSNW18%VTSTSDSBJMTTFSWFSXVTSTSDSBJMT TFSWFSBVUIPSSBJMTTFSWFSMBUFTU w SNίϚϯυ࣮ߦޙʹίϯςφΛফ͢ w WϘϦϡʔϜΛϚϯτ͢Δ$PSF04ଆͷΧϨϯτσΟϨΫτϦΛ VTSTSDSBJMTTFSWFSʹϚϯτ͍ͯ͠Δ w
Xίϯςφ࣮ߦ࣌ͷϫʔΩϯάσΟϨΫτϦΛઃఆ w BVUIPSSBJMTTFSWFSMBUFTU࣮ߦ͢Δ%PDLFSΠϝʔδ
3BJMTΞϓϦέʔγϣϯߏங CJOCBTIDCVOEMFFYFDSBJMTOFXNZBQQ5GXFCQBDLSFBDU EBUBCBTFNZTRMTLJQDP⒎FFTLJQTQSPDLFUT w 3BJMTΞϓϦͷ࡞ίϚϯυ w 5σϑΥϧτͷNJOJUFTUΛ࡞Βͳ͍ w G(FNpMF্͕͋ͬͯॻ͖͢Δ
w XFCQBDLSFBDUXFCQBDLͰ3FBDUΛ͏ w EBUBCBTFNZTRM.Z42-Λσʔλϕʔεʹ͢Δ w TLJQDP⒎FF$P⒎FF4DSJQUΛ࡞Βͳ͍ w TLJQTQSPDLFUT4QSPDLFUTΛΠϯετʔϧ͠ͳ͍
3BJMTΞϓϦέʔγϣϯߏங DENZBQQCVOEMFFYFDSBLFXFCQBDLFSJOTUBMMCVOEMF FYFDSBLFXFCQBDLFSJOTUBMMSFBDUCVOEMFFYFDSBLF XFCQBDLFSJOTUBMMUZQFTDSJQU w 8FCQBDLFSͷઃఆ w DENZBQQSBJMTOFXͰ࡞ͨ͠3BJMTΞϓϦ·ͰҠಈ w
CVOEMFFYFDSBLFXFCQBDLFSJOTUBMM8FCQBDLFSͷΠϯετʔϧ w CVOEMFFYFDSBLFXFCQBDLFSJOTUBMMSFBDU8FCQBDLFSʹSFBDUΛೖΕΔ w CVOEMFFYFDSBLFXFCQBDLFSJOTUBMMUZQFTDSJQU8FCQBDLFSʹ UZQFTDSJQUΛೖΕΔ
͜ΕΛ͢Δͱɺ3BJMTΞϓϦ͕ϗ ετϚγϯʹ࡞͞Ε͍ͯΔ
3BJMTαʔόىಈ
Ͱɺ3BJMTαʔόΛىಈͯ͠Έ ·͠ΐ͏
3BJMTαʔόͷىಈ ҎԼɺ%PDLFSpMFΛ)0.&TIBSFSBJMTBQQNZBQQ্ʹ࡞͠ɺ Ϗϧυ FROM ruby:2.5.3 ENV APP_DIR /usr/src/myapp RUN
mkdir -p ${APP_DIR} WORKDIR $APP_DIR RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs mysql-client &&\ npm install -g yarn COPY . $APP_DIR RUN bundle install --path vendor/bundle CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]
3BJMTαʔόͷىಈ EPDLFSSVOQBVUIPSSVOOFSMBUFTU w QϙʔτϑΥϫʔυͷઃఆɻ$PSF04ଆͷͱίϯ ςφଆͷΛϑΥϫʔυ͍ͯ͠Δ
None
.Z42-ʹଓͰ͖ͳ͍ͷͰɺ.Z42- ༻ͷίϯςφىಈ͠·͠ΐ͏
ͦ͏͢Δͱɺෳͷίϯςφؒ Ͱ௨৴ͤ͞Δඞཁ͕ग़ͯ͘Δ
ͦ͜Ͱ
None
EPDLFSDPNQPTF
EPDLFSDPNQPTF w 3BJMTଆͷ%#ઃఆΛमਖ਼ w )0.&TIBSFSBJMTTFSWFSNZBQQDPOpHEBUBCBTFZNMͷEFGBVMU෦ ΛҎԼͷΑ͏ʹमਖ਼ default: &default adapter:
mysql2 encoding: utf8 pool: 5 username: root password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> host: <%= ENV['MYAPP_DATABASE_HOST'] %>
EPDLFSDPNQPTF version: '2' services: db: image: mysql:5.7 environment: -
MYSQL_ROOT_PASSWORD=mysql ports: - 3306:3306 networks: - default web: environment: - MYAPP_DATABASE_PASSWORD=mysql - MYAPP_DATABASE_HOST=db build: rails-app/myapp ports: - 3000:3000 networks: - default depends_on: - db networks: default: driver: bridge w EPDLFSDPNQPTFZNMΛ)0.&TIBSFʹ ࡞ w ͦͷޙɺdocker-compose upͰىಈ͢Δ
None
EPDLFSDPNQPTF w %#͕࡞͞Εͯͳ͍ͷͰɺམͪͯ͠·͍·͢ w ͳͷͰɺىಈ࣌ʹ࡞ͱϚΠάϨʔγϣϯΛ࣮ߦ͢ΔΑ͏ʹ͠· ͠ΐ͏
EPDLFSDPNQPTF w .Z42-ͷ্ཱ͕ͪΓΛࢹͯ͠ ࣮ߦ͢ΔγΣϧεΫϦϓτΛ࡞ w ͜ΕΛɺ)0.&TIBSFSBJMT TFSWFSNZBQQʹஔ͓ͯ͘͠ #!/bin/sh
set -e host="$1" shift user="$1" shift password="$1" shift cmd="$@" echo "Waiting for mysql" until mysql -h"$host" -u"$user" -p"$password" &> /dev/null do >$2 echo -n "." sleep 1 done bundle exec rake db:create bundle exec rake db:migrate exec $cmd
EPDLFSDPNQPTF w EPDLFSDPNQPTFZNMͷXFC෦Λमਖ਼ w ҎԼͷҰߦΛɺEFQFOET@POͷԼʹهࡌ w ZNMͳͷͰΠϯσϯτʹҙ command: sh
./wait-for-it.sh db root mysql bundle exec rails server -b 0.0.0.0
docker-compose up —buildͰىಈ͠ͳ͓͢ͱ
None
࠷ޙʹ w $USM$ͰEPDLFSDPNQPTFऴྃͰ͖ΔͷͰɺ࣮ߦͯ͠ΈͨΒఀࢭ ͠·͠ΐ͏ w ࠓճ্ཱͪ͛ͨ7BHSBOUڥWBHSBOUIBMUͰऴྃͰ͖·͢ͷͰɺ ͍ऴΘͬͨΒऴྃ͠·͠ΐ͏ w ࠓճͷϋϯζΦϯΛͱʹɺ%PDLFSΛ͍Ζ͍Ζͳͱ͜ΖͰͬͯΈ ͍ͯͩ͘͞
FROM <image> ϕʔεʹͳΔΠϝʔδΛઃఆ USER <user> ࣮ߦϢʔβͷΓସ͑ ENV <key> <value>
ΠϝʔδϏϧυ࣌ʹ༻͢ΔڥมΛઃఆ RUN <command> ΠϝʔδϏϧυ࣌ʹ࣮ߦ͢ΔίϚϯυΛઃఆ CMD <command> ίϯςφ࡞࣌ʹ࣮ߦ͢ΔίϚϯυΛઃఆ COPY <src>... <dest> <src>͔Β<dest>ʹϑΝΠϧΛίϐʔ͢Δ ADD <src>... <dest> tarϑΝΠϧͷల։ɺϦϞʔτURL͔ΒͷऔಘΛߦ ͍͍ͨ߹ͷΈ༻͢Δ WORKDIR <directory> ΠϝʔδϏϧυ࣌ʹ࣮ߦ͢ΔϫʔΩϯάσΟϨΫτ ϦΛઃఆ͢Δ ͓·͚%PDLFSpMFνʔτγʔτ