Slide 1

Slide 1 text

dockerignoreͷ࿩ Container Build Meetup #2 #container_build @orisano

Slide 2

Slide 2 text

docker buildͷ࿩Λ͠·͢

Slide 3

Slide 3 text

%PDLFS$-* EPDLFSE

Slide 4

Slide 4 text

%PDLFS$-* EPDLFSE $ docker build .

Slide 5

Slide 5 text

%PDLFS$-* EPDLFSE $ docker build [build context]

Slide 6

Slide 6 text

%PDLFS$-* EPDLFSE $ docker build . 1. build contextΛtarͰarchive͢Δ

Slide 7

Slide 7 text

%PDLFS$-* EPDLFSE $ docker build . 2. dockerdʹରͯ͠POST͢Δ

Slide 8

Slide 8 text

%PDLFS$-* EPDLFSE $ docker build . 3. ड͚औͬͨtarΛల։

Slide 9

Slide 9 text

%PDLFS$-* EPDLFSE $ docker build . 4. DockerfileͷղऍΛ͢Δ

Slide 10

Slide 10 text

%PDLFS$-* EPDLFSE $ docker build . 5. εςʔδ͝ͱʹ࣮ߦ

Slide 11

Slide 11 text

%PDLFS$-* EPDLFSE $ docker build . 6. InstructionΛ࣮ߦ

Slide 12

Slide 12 text

%PDLFS$-* EPDLFSE $ docker build . 7. Instructionຖʹimage͕Ͱ͖Δ

Slide 13

Slide 13 text

%PDLFS$-* EPDLFSE $ docker build . 8.ऴΘͬͨΒ௨஌

Slide 14

Slide 14 text

ෆཁͳϑΝΠϧ͸ build contextʹؚΊͨ͘ͳ͍

Slide 15

Slide 15 text

ͳͥʁ

Slide 16

Slide 16 text

1. Archiveͷίετ 2. సૹͷίετ 3. cacheͷͨΊ

Slide 17

Slide 17 text

1. Archiveͷίετ 2. సૹͷίετ 3. cacheͷͨΊ

Slide 18

Slide 18 text

େྔͷϑΝΠϧΛ ΞʔΧΠϒ͢Δͷ͸ॏ͍ (node_modulesͳͲ)

Slide 19

Slide 19 text

ΫϥΠΞϯτଆͰߦ͏͕ ݱঢ়̎ͭͷ࣮૷͕͋Δ

Slide 20

Slide 20 text

docker/cli (Go) docker/docker-py (Python)

Slide 21

Slide 21 text

docker/cli (Go) dockerίϚϯυ

Slide 22

Slide 22 text

docker/docker-py (Python)

Slide 23

Slide 23 text

Docker Engine APIΛ Python͔Β࢖͏ͨΊͷ΋ͷ docker/compose ͕࢖͍ͬͯΔ ͳΜ͔஗͍

Slide 24

Slide 24 text

AntiVirusͳͲ͕ I/OΛhook͍ͯ͠Δ৔߹ I/Oίετ͕΍͹͍

Slide 25

Slide 25 text

1. Archiveͷίετ 2. సૹͷίετ 3. cacheͷͨΊ

Slide 26

Slide 26 text

େ͖ͳϑΝΠϧΛૹΔͷ͸ େม

Slide 27

Slide 27 text

1. Archiveͷίετ 2. సૹͷίετ 3. cacheͷͨΊ

Slide 28

Slide 28 text

COPYͰ ҙਤͯ͠ͳ͍ϑΝΠϧ͕ ର৅ʹͳ͍ͬͯΔͱ cache͕յΕͯ࠷ѱ

Slide 29

Slide 29 text

build contextʹ ؚΊͯ͸͍͚ͳ͍ϑΝΠϧ ͕͋Δ

Slide 30

Slide 30 text

1. ೝূ৘ใ 2. ΞʔΩςΫνϟґଘ

Slide 31

Slide 31 text

1. ೝূ৘ใ 2. ΞʔΩςΫνϟґଘ

Slide 32

Slide 32 text

ݴΘͣ΋͕ͳ .envͳͲ

Slide 33

Slide 33 text

.git͕ةݥͳ৔߹΋͋Δ personal tokenͰͷ git cloneΛ͍ͯ͠ΔͳͲ

Slide 34

Slide 34 text

1. ೝূ৘ใ 2. ΞʔΩςΫνϟґଘ

Slide 35

Slide 35 text

package managerʹΑΔ͕ ͦͷ؀ڥ޲͚ͷbuildࡁΈ όΠφϦ͕͓͍ͯ͋Δ͜ͱ͕ (npm)

Slide 36

Slide 36 text

Ҏ্ͷ໰୊Λղܾ͢ΔͨΊʹ dockerignore Λ࢖͏

Slide 37

Slide 37 text

dockerignore

Slide 38

Slide 38 text

ޙΖʹॻ͍ͯ͋Δ pattern͕༏ઌ͞ΕΔ ઌ಄ʹ!Λ͚ͭΔͱ൱ఆͰ͖Δ

Slide 39

Slide 39 text

࢖͑Δදه foo/* foo/** foo/?

Slide 40

Slide 40 text

಺෦Ͱ ਖ਼نදݱʹม׵͍ͯ͠Δ

Slide 41

Slide 41 text

ਖ਼نදݱͳΒΘ͔Δ ͱ͍͏ਓ޲͚ʹ github.com/orisano/dire

Slide 42

Slide 42 text

ରԠ͢Δਖ਼نදݱΛग़ྗ

Slide 43

Slide 43 text

Ͳ͏΍࣮ͬͯݱ͍ͯ͠Δ͔

Slide 44

Slide 44 text

%PDLFS$-* EPDLFSE $ docker build . 1. build contextΛtarͰarchive͢Δ

Slide 45

Slide 45 text

%PDLFS$-* EPDLFSE $ docker build . 0. build contextͷҎԼͷϑΝΠϧ͕readՄೳ͔֬ೝ (͜͜΋dockerignoreΛߟྀ͞ΕΔ)

Slide 46

Slide 46 text

%PDLFS$-* EPDLFSE $ docker build . 0.5. directoryΛtraverse͠ͳ͕Βdockerignoreʹ Ϛον͠ͳ͍ϑΝΠϧΛtarʹ௥Ճ͍ͯ͘͠

Slide 47

Slide 47 text

%PDLFS$-* EPDLFSE $ docker build . 1. build contextΛtarͰarchive͢Δ

Slide 48

Slide 48 text

༨ஊ

Slide 49

Slide 49 text

%PDLFS$-* EPDLFSE $ docker build . 0. build contextͷҎԼͷϑΝΠϧ͕readՄೳ͔֬ೝ (͜͜΋dockerignoreΛߟྀ͞ΕΔ)

Slide 50

Slide 50 text

ϑΝΠϧ਺෼dockerignore͕ ίϯύΠϧ͞ΕΔΑ͏ʹ ͳ͍ͬͯͨ

Slide 51

Slide 51 text

docker/cli/pull/1577 Ͱमਖ਼͞Ε Docker 19.03 ͔ΒೖΓ·͢

Slide 52

Slide 52 text

ͪΐͬͱಛघͳྫ

Slide 53

Slide 53 text

monorepoͰ subsystemؒͷґଘ͕͋Δ ৔߹

Slide 54

Slide 54 text

େຊΛbuild contextʹ ͠ͳ͍ͱ͍͚ͳ͘ͳΔ

Slide 55

Slide 55 text

build context͕Ͱ͔͘ͳΔ

Slide 56

Slide 56 text

dockerignoreͰղܾ! ͢Δ͜ͱ͸Ͱ͖ͳ͍

Slide 57

Slide 57 text

dockerignore͸buildຖʹ ϑΝΠϧΛࢦఆͰ͖ͳ͍

Slide 58

Slide 58 text

subsystemຖʹ dockerignoreΛ࡞Γ buildͷͨͼʹ dockerignoreΛࣗಈੜ੒͢Δ Ξϓϩʔν͕༗ޮ

Slide 59

Slide 59 text

github.com/orisano/dignore

Slide 60

Slide 60 text

Α͋͘Δ࿩

Slide 61

Slide 61 text

gitignoreͱdockerignore ͕ ΄΅ҰॹʹͳΔ

Slide 62

Slide 62 text

ͦ͏͍͏৔߹ʹ͸ dockerignore ͍Βͳ͘ͳΔํ๏͕͋Δ

Slide 63

Slide 63 text

git archiveͬͯ ίϚϯυ࢖ͬͨ͜ͱ͋Γ·͔͢

Slide 64

Slide 64 text

repositoryΛtarʹͰ͖Δ ίϚϯυ

Slide 65

Slide 65 text

tarʹ͢Ε͹buildͰ͖ΔͷͰ

Slide 66

Slide 66 text

git archive HEAD | docker build -