Slide 1

Slide 1 text

Rails on Docker @bigplants May 10th 2018 @Omotesando.rb

Slide 2

Slide 2 text

Who am I ? • Daiki Hirakata (36) • Software Engineer • Main Programing Languages:
 PHP, Ruby • Primary interests:
 DevOps, Docker, Kubernetes, Microservice Architecture, GCP @bigplants

Slide 3

Slide 3 text

࠷ۙϥϯχϯά͸͡Ί·ͨ͠

Slide 4

Slide 4 text

ͪΐͬͱ͚ͩએ఻

Slide 5

Slide 5 text

ઈࢍ։ൃऀืूதʂ • ϓϩμΫτ໊: ALL-IN • اۀ׆ಈͰඞཁͳશͯͷ πʔϧ͕ೖ͍ͬͯΔ • Rails, Angular, AWS • גࣜձࣾϏδωεόϯΫ άϧʔϓ

Slide 6

Slide 6 text

ݱࡏɺεςʔδϯά؀ڥΛ ઈࢍKubernetesҠߦதͰ͢ɻ

Slide 7

Slide 7 text

ϩʔυϚοϓ • ։ൃ༻ίϯςφ४උ • ެ։༻ίϯςφ४උ • GKEʹσϓϩΠ <- ΠϚίί • CI/CDύΠϓϥΠϯͷ੔උ
 ͍ͭͰ΋୭Ͱ΋͓खܰʹk8sΫϥελʹ؀ڥߏங&σ ϓϩΠͰ͖ΔΑ͏ʹ͢Δ

Slide 8

Slide 8 text

໨ࢦͤʂ ແݶεςʔδϯάͷ࣮ݱʂ

Slide 9

Slide 9 text

ࠓ೔͸ެ։؀ڥ༻ͷ Rails on Docker ͳ࿩Λ͠·͢ɻ × ΄΅dockerͷ࿩Ͱ͢ɻɻ

Slide 10

Slide 10 text

Rails appΛ docker build͢Δͱ͖

Slide 11

Slide 11 text

݁ߏ΍Δ͜ͱ͋Δ • bundle install • npm install • rake bower:install • rake bower:resolve • rake assets:precompile • And more tasks…

Slide 12

Slide 12 text

ނʹɺdocker buildʹ ͔͔࣌ؒΔ Լख͢Δͱover 10min

Slide 13

Slide 13 text

ߋʹΠϝʔδαΠζͷංେԽ Լख͢Δͱover 1.5GB

Slide 14

Slide 14 text

docker build͸1secͰ΋ૣ͍ ΄͏͕͍͍ git pushͷ౓ʹCIʹdocker build͍ͤͨ͞

Slide 15

Slide 15 text

docker image͸1MBͰ΋ܰ ͍΄͏͕͍͍ Google Container Registory΁ͷ ΞοϓϩʔυɺGKE΁ͷσϓϩΠʹӨڹ͢Δ

Slide 16

Slide 16 text

docker build docker push git push kubectl apply get image

Slide 17

Slide 17 text

docker build docker push git push kubectl apply get image Ϗϧυʹ͔͔࣌ؒΔͱ

Slide 18

Slide 18 text

docker build docker push git push kubectl apply get image ΠϝʔδͷαΠζ͕σΧΠͱ

Slide 19

Slide 19 text

Ϗϧυͷ࣌ؒΛ୹ॖ͢Δʹ͸ʁ

Slide 20

Slide 20 text

ΩϟογϡΛ͏·͔ͭ͘͏

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

ΠϝʔδͷαΠζΛ཈͑Δʹ ͸

Slide 23

Slide 23 text

·ͣඞཁͳ΋ͷΛશ෦ೖΕΔ

Slide 24

Slide 24 text

ཁΒͳ͍΋ͷΛ࡟আ ಉ͡Dockerfile಺

Slide 25

Slide 25 text

΋͏Ұ౓ίϐʔ ಉ͡Dockerfile಺

Slide 26

Slide 26 text

͜ΕͰΠϝʔδͷαΠζ͕ 1.5GB -> 500MB͘Β͍ʹʂ ※͋͘·Ͱචऀͷ؀ڥͰͷ࿩Ͱ͢

Slide 27

Slide 27 text

Tips

Slide 28

Slide 28 text

docker buildͰ؀ڥม਺Λॻ ͖׵͑Δʹ͸

Slide 29

Slide 29 text

docker buildͰ͸ENVΛ౉ͤͳ ͍

Slide 30

Slide 30 text

--build-arg͕࢖͑ͦ͏

Slide 31

Slide 31 text

ARGͰENVΛॻ͖׵͑Δ • docker build --build-arg RAILS_ENV=production --build-arg HOGE=fuga

Slide 32

Slide 32 text

ARGͷҐஔ΋ॏཁ

Slide 33

Slide 33 text

ARGͷҐஔ΋ॏཁ

Slide 34

Slide 34 text

RUN಺Ͱ؀ڥม਺Λૢ࡞͢Δ΂ ͖Ͱͳ͍ • ͨͩͷshellͩͱ͍͏ࣄΛཧղ͢Δ

Slide 35

Slide 35 text

ϨΠϠ͕෼͔ΕΔͱͦΕͧΕ༰ྔΛ৯͏ɻͳΔ΂͘RUN͸·ͱΊΔ ͋ͱ͔Β࡟আͯ͠΋Πϝʔδα Πζ͸มΘΒͳ͍

Slide 36

Slide 36 text

΋͘͠͸ɺ͖ͬ͞ग़͖ͯͨ Multi-stage buildͷςΫχο ΫͰ

Slide 37

Slide 37 text

docker history ͰͲ ͜ͰαΠζ͕๲ΒΜͰΔ͔֬ೝ

Slide 38

Slide 38 text

σόοάͷͨΊʹ͍Βͳ͍΋ͷΛ࡟আ͢Δ લͷঢ়ଶͰ֬ೝͰ͖ΔΑ͏ʹεςʔδΛΘ ͚Δ • docker build --target -t

Slide 39

Slide 39 text

ࠓ೔ͷ·ͱΊ • Ϗϧυߴ଎ԽͷҝʹΩϟογϡΛ͏·͘࢖͓ ͏ • ΠϝʔδαΠζͷѹॖͷͨΊʹMulti-stage build͠Α͏