%PDLFSೖͬͯ·͔͢ʁಈ͖·͔͢ʁ
CHECK!
$ docker -v
Docker version 1.10.0, build 590d510
$ docker ps
CONTAINER ID …
$ docker-compose -v
docker-compose version 1.6.0, build unknown
ʢόʔδϣϯಛʹؾʹ͠ͳ͍Ͱ͢ɻͪΖΜ࠷৽Ͱ͋Δ΄ͲΑ͍ʣ
Slide 5
Slide 5 text
ຊͷ༰
w 8BOUFEMZͰͷ։ൃʹ͓͚Δॾ
w %PDLFS$PNQPTFͰαʔϏεΛಈ͔ͦ͏
w %PDLFS$PNQPTFͰߏஙͨ͠ΞϓϦΛ
σϓϩΠ͠Α͏
w %PDLFS1BB4*BB4
Slide 6
Slide 6 text
Wantedly Ͱͷ։ൃʹ
͓͚Δॾ
Slide 7
Slide 7 text
www.wantedly.com Λ
ࢧ͑Δٕज़
w 3BJMTͷ΄͔ʹʜ
w 1PTUHSF42-
w &MBTUJDTFBSDI
w .FNDBDIFE
w 3FEJT
w 1IBOUPN+4
w ։ൃɾςετʹ͜ΕΒͷαʔϏε͕ඞཁ
Slide 8
Slide 8 text
www.wantedly.com Λ
ࢧ͑Δٕज़
w )PNFCSFXʹΑΔ։ൃڥߏங
w brew updateͰ։ൃڥ͕յΕΔ
w &MBTUJDTFBSDIຊମͱϓϥάΠϯͷ
όʔδϣϯΛγϏΞʹ߹Θͤͳ͍ͱμϝ
w ຊ൪ͷ&MBTUJDBDIF3FEJTYͷΈ
w ΠϯετʔϧεΫϦϓτͰແཧΓ
όʔδϣϯΛݻఆʜ
w bundle install͕ࣦഊʢಛʹ$֦ுHFNʣ
Slide 9
Slide 9 text
Elasticsearch on Docker
Slide 10
Slide 10 text
Elasticsearch on Docker
w ຊ൪ͷ&MBTUJDTFBSDI%PDLFSίϯςφͱ
ͯ͠Քಇ͍ͯ͠Δ
w RVBZJP্ͰΠϝʔδཧ
w αʔϏεʹ߹Θͤͨνϡʔχϯά
w ಠࣗࣙॻΛಉࠝ
w ͜ΕΛ։ൃςετͰ͍͍ͨʜ
Slide 11
Slide 11 text
ϑΟʔνϟϒϥϯνͷ
σϓϩΠ
w ຊ൪ڥ 1SPEVDUJPO
2"ڥ 2"
w 2"ॱ൪ͪ
w 2"ͭͩͱΓͳ͘ͳ͖ͬͯͨ
w ࣗͷϒϥϯνΛؾܰʹσϓϩΠͰ͖Δ
ڥ͕΄͍͠
Slide 12
Slide 12 text
ϚΠΫϩαʔϏεج൫
w ੲ͔Β3BJMTͰ࣮͞Ε͍ͯͨػೳʹ͍ͭͯɺ
ύϑΥʔϚϯε্ͷͨΊʹ(PͰ࠶࣮
͢Δྫ͕͋Δ
w 4ZOD8BOUFEMZ5PPMTͷΑ͏ʹɺຊମͱ
ҟͳΔαʔϏεΛϦϦʔε͢Δػձ͕
૿͑ͨ
w ͜Μͳͱ͖ɺΛ͔͚ͯΠϯϑϥΛ༻ҙ͢
ΔͷͰͳ͘DockerfileΛॻ͚σϓϩΠͰ
͖ΔΑ͏ͳڥ͕΄͍͠
Slide 13
Slide 13 text
Docker
Slide 14
Slide 14 text
Docker Ͱڥߏங
w ΞϓϦ୯ҐͰڥΛಠཱͤ͞ΒΕΔ
w ͜ͷαʔϏεͰ&Tɺ͋ͷαʔϏεͰ
&TʜͰॊೈʹରԠՄೳ
w ຊ൪ڥΛखݩͰ༰қʹ࠶ݱՄೳ
w ΞʔΩςΫνϟґଘ͔Β٫Ͱ͖Δ
w ඇΠϯϑϥͰ%PDLFSpMFΛॻ͖͍͢
w ͳͲͳͲ
Slide 15
Slide 15 text
Docker Ͱڥߏங
w ෳίϯςφͷཧ͕໘
w 3BJMT൪ϙʔτͰཱͨͤͯɺ
1PTUHSF42-ͱMJOLͰͭͳ͛ͯʜ
w ্ཱͪ͛ॱংߟྀ͠ͳ͍ͱ͍͚ͳ͍
1PTUHSF42-
3FEJT
3BJMT
3000/tcp
link db:postgres
link redis:redis
Slide 16
Slide 16 text
Docker
Compose
Slide 17
Slide 17 text
EPDLFSDPNQPTF
Docker Compose
w ෳͷ%PDLFSίϯςφͰߏ͞ΕΔΞϓϦ
Λ؆୯ʹཧ͢ΔͨΊͷπʔϧ
w :".-Ͱ֤ίϯςφͷىಈߏͱ࿈ܞΛهड़
w docker runͷΦϓγϣϯΛߏతʹ
ॻ͚ΔͨΊɺ୯ҰίϯςφͰศར
w ίϚϯυҰൃͰΞϓϦͷVQEPXO
TDBMJOH͕Մೳ
w ·ͣ1PTUHSF42-ΛཱͯΔهड़
Docker Compose Ͱ
Rails ΛݐͯͯΈΑ͏
db:
image: postgres:9.4
Slide 22
Slide 22 text
w ͍ͭͮͯ3BJMTΛཱͯΔهड़
Docker Compose Ͱ
Rails ΛݐͯͯΈΑ͏
web:
build: .
command: bin/rails s -p 3000 -b '0.0.0.0'
environment:
- DATABASE_HOST=db
- DATABASE_PORT=5432
- DATABASE_USER=postgres
ports:
- "3000:3000"
links:
- db
Slide 23
Slide 23 text
w ىಈʂ
w ৽͍͠λʔϛφϧΟϯυΛ։͍ͯʜ
w σʔλϕʔεͷηοτΞοϓ
Docker Compose Ͱ
Rails ΛݐͯͯΈΑ͏
$ docker-compose build
$ docker-compose up
$ docker-compose run web bin/rake db:setup
%PDLFS.BDIJOF্ͰCVJME͕ࣦഊ͢Δ߹ɺ
$ docker-machine stop default
$ docker-machine up default
Ͱ7.Λ࠶ىಈ͍ͯͩ͘͠͞
VQ͕ࣦഊ͢Δ߹ɺ
$ docker-compose stop
$ docker-compose rm -f
ͰίϯςφΛফͯ͠Γ͢
Slide 24
Slide 24 text
w ΞΫηεͯ͠Έ·͠ΐ͏ʂ
Docker Compose Ͱ
Rails ΛݐͯͯΈΑ͏
$ open http://$(docker-machine ip dev):3000
# Linux など直接 Docker が稼働しているなら
$ open http://localhost:3000
EFGBVMU
EPDLFSWNͳͲ
खݩͷڥʹ߹Θ͍ͤͯͩ͘͞
w KXJMEFSOHJOYQSPYZ
w VIRTUAL_HOSTڥมͷதΛ༻͍ͯ
ϧʔςΟϯάΛ࡞
w ઌ΄Ͳͷdocker-compose.ymlʹҎԼΛՃ
nginx Έ߹ΘͤΑ͏
nginx:
image: jwilder/nginx-proxy
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
Slide 27
Slide 27 text
w 3BJMTͷϙʔτׂΛͳ͘͢
w VIRTUAL_HOSTڥมΛՃ
nginx Έ߹ΘͤΑ͏
web:
build: .
command: bin/rails s -p 3000 -b '0.0.0.0'
environment:
- DATABASE_HOST=db
- DATABASE_PORT=5432
- DATABASE_USER=postgres
- VIRTUAL_HOST=docker.sokushu.dev
links:
- db
Slide 28
Slide 28 text
w ىಈʂ
w ઃఆͨ͠ϗετ໊ͰΞΫηε
w /etc/hostsΛॻ͖͑ͯϒϥβͰ
nginx Έ߹ΘͤΑ͏
$ docker-compose up
$ curl -H "Host: docker.sokushu.dev" \
http://$(docker-machine ip docker-vm)
Slide 29
Slide 29 text
σϓϩΠ
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
Heroku
w git push͢Δ͚ͩͰΞϓϦ͕σϓϩΠ͞Εɺ
ࣗಈͰ63-ׂΓৼΒΕΔ
w 1PTUHSF42-
3FEJT
.FNDBDIFEඪ४Ͱϓ
ϥάΠϯ͕༻ҙ͞Ε͍ͯΔ
w ͠Β͘લʹ%PDLFSରԠͨ͠
w खݩͰಉ͡Α͏ͳߏΛ࠶ݱͰ͖Δ
w ࣗલOHJOY
&MBTUJDTFBSDIͳͲݐͯΒΕͳ͍
Slide 33
Slide 33 text
Paus
w ΠϯυωγΞޠͰʮ͘͡Βʯ
w docker-compose.ymlॻ͍ͯgit push͢Δ
͚ͩͰɺΫϥυ্ʹΞϓϦέʔγϣϯ͕
ىಈ͢Δ؆қ1BB4
w $PSF04%PDLFS
EUBOQBVT
Slide 34
Slide 34 text
Paus ʹσϓϩΠ͠Α͏
• git checkout master
w docker-compose.ymlมߋ
web:
image: quay.io/dtan4/docker-service-rails:latest
command: bin/rails s -p 8080 -b '0.0.0.0'
environment:
- DATABASE_HOST=db
- DATABASE_PORT=5432
- DATABASE_USER=postgres
ports:
- 8080
links:
- db
Slide 35
Slide 35 text
Paus ʹσϓϩΠ͠Α͏
w IUUQQBVTXBOUFEMZDPNͰެ։伴ొ
ࣗͷϢʔβ໊
44)ެ։伴
Slide 36
Slide 36 text
Paus ʹσϓϩΠ͠Α͏
• ~/.ssh/configʹҎԼΛՃ
Host paus
HostName paus.wantedly.com
User git
Port 2222
IdentityFile ~/.ssh/id_rsa
ઌ΄Ͳొͨ͠ެ։伴ͷ
ϖΞͱͳΔൿີ伴
Slide 37
Slide 37 text
Paus ʹσϓϩΠ͠Α͏
w ϦϞʔτϦϙδτϦpausΛՃ
$ git remote add paus \
paus:/
Slide 38
Slide 38 text
Paus ʹσϓϩΠ͠Α͏
w git pushͯ͠σϓϩΠʂ
$ git push paus master
Slide 39
Slide 39 text
Paus ʹσϓϩΠ͠Α͏
σϓϩΠ͞Εͨ
ΞϓϦͷ63-
Slide 40
Slide 40 text
Paus ΞʔΩςΫνϟ
%PDLFS
$PNQPTF
FUDE
HJUSFDFJWFE
git push
docker-compose
up
etcdctl set
7VMDBOE
http://dtan4-rails-ffe7rf8.example.com
XFC
EC
XFC
EC
Slide 41
Slide 41 text
Docker
PaaS / IaaS
Slide 42
Slide 42 text
Docker PaaS / IaaS
w )FSPLVΫϩʔϯ
w EPLLV BMU
'MZOO
%FJT
&NQJSF
w ಠࣗܗࣜ
w ,VCFSOFUFT
"NB[PO&$4
w Πϯϑϥ͝ͱཧ
w 5VUVN
%$)2JP
Slide 43
Slide 43 text
·ͱΊ
Slide 44
Slide 44 text
·ͱΊ
w 8BOUFEMZͷ։ൃݱͰͷॾʹର͢Δ
ղܾࡦͱͯ͠ɺ%PDLFSΛ༻͍ͨڥߏஙΛ
հ͠·ͨ͠
w %PDLFS$PNQPTFΛ༻͍ͯ3BJMTͱෳͷ
αʔϏεΛΈ߹ΘͤͨΞϓϦ͕ߏஙͰ͖Δ
Α͏ʹͳΓ·ͨ͠
w 1BB4*BB4ͷ܈༤ׂڌ࣌