#1384์์ ํ ๋ก ์ ๋ถ๊ธฐํฉ๋๋ค.
-no-cache๊ฐ ์ ์ฒด Dockerfile์ ๋ํ ์บ์ฑ์ ๋นํ์ฑํํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ํ์ง๋ง ํน์ RUN ๋ช ๋ น์ ๋ํด ์บ์๋ฅผ ๋นํ์ฑํํ ์ ์๋ค๋ฉด ์ ์ฉํ ๊น์? ์๋ฅผ ๋ค์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์ ๋ฐ์ดํธ ๋๋ ์๊ฒฉ ํ์ผ ๋ค์ด๋ก๋ ... ๋ฑ. ์บ์๋ ๊ฒฝ์ฐ apt-get ์ ๋ฐ์ดํธ๋ฅผ ์คํํ๋ฉด ์ค์ ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ ๋ฐ์ดํธ๋์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๊น? ์ด๋ก ์ธํด ๊ฒฐ๊ณผ๊ฐ VM๊ณผ ๋ค๋ฅผ ์ ์์ต๋๊น?
Dockerfile์ ํน์ ๋ช ๋ น์ ๋ํ ์บ์ฑ ๋นํ์ฑํ๊ฐ ๊ฐ๋ฅํด์ง๋ฉด ํ์ผ์ ํ์ ๋ช ๋ น์ด ์บ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๊น? ์๋๋ฉด ์ด์ ๋ช ๋ น์ด ์ด์ ์คํ๊ณผ ๋น๊ตํ ๋ ๋์ผํ ๊ฒฐ๊ณผ(fs ๋ ์ด์ด)๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ์บ์๋ฅผ ์ฌ์ฉํ๋ ๋ฑ ์ข ๋ ์ง๋ฅ์ ์ธ ์์ ์ ์ํํ ์ ์์ต๋๊น?
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์บ์ํ๋ ค๋ Dockerfile์ ์์ ์ ์ทจํ๊ณ ์ด๋ฅผ ๋ฏธ๋์ Dockerfile์ FROM
์์ ์ฌ์ฉํ ์ด๋ฏธ์ง๋ก ํ๊ทธ ์ง์ ํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฉด -no-cache
๋ก ๋น๋ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง๊ฐ ๋ค์ ๋น๋๋์ง ์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ ์์ด
ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ์บ์๋ ๋ช ๋ น๊ณผ ์บ์๋์ง ์์ ๋ช ๋ น์ ์ฝ๊ฒ ์ธํฐ๋ฆฌ๋นํ๋ ๊ฒ์ด ์ ํ๋์ง ์์๊น์?
์๋ฅผ ๋ค์ด ์๋ฒ์์ ๋ด repo ๋ฐ wget ํ์ผ์ ์ ๋ฐ์ดํธํ๊ณ ๊ทธ ์ฌ์ด์ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ์ํํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด repo์์ ์ํํธ์จ์ด ์ค์น(์ ๋ฐ์ดํธ๋์์ ์ ์์) - ๋ค์ด๋ก๋ํ ํ์ผ์ ๋ํ ์์ ์ํ( ์๋ฒ) ๋ฑ
์ด์์ ์ธ ๊ฒ์ Dockerfile์์ ๋์ปค๋ฅผ ์ง์ ํ์ฌ ๋งค๋ฒ ์บ์ ์์ด ํน์ ๋ช ๋ น์ ์คํํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ(์: ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋ฐ์ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ) ์ด์ ์ด๋ฏธ์ง๋ง ์ฌ์ฌ์ฉํ๋๋ก ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์์ผ๋ฉด ์ ์ฉํ์ง ์์๊น์?
Dockerfile์ CACHE ON ๋ฐ CACHE OFF๋ ์ด๋ป์ต๋๊น? ๊ฐ ๋ช ๋ น์ ํ์ ๋ช ๋ น์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์, ๋ด Dockerfile์์ git clone
๋ช
๋ น์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์
๋ฐ์ดํธ๋ก ๋ค์ ๋ณต์ ํ๋ ค๋ฉด ์ค ๋์ ์ฃผ์์ ์ถ๊ฐํ์ฌ ๋ค์ ๋น๋๋ฅผ ํธ๋ฆฌ๊ฑฐํด์ผ ํฉ๋๋ค. ๋ผ์ธ. ์ด ๋จ๊ณ์์๋ ์์ ํ ์๋ก์ด ๊ธฐ๋ณธ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.
์ปจํ ์ด๋ ID๋ฅผ "์ด ID๋ฅผ ์ง๋ ์บ์ํ์ง ์์" ๋ช ๋ น์ผ๋ก '๋์ปค ๋น๋'์ ์ ๋ฌํ ์ ์์ต๋๊น? '๋์ปค ๋น๋'๊ฐ Dockerfile์ ๋ณ๊ฒฝ๋ ๋ผ์ธ๊น์ง ๋ชจ๋ ๋จ๊ณ๋ฅผ ์บ์ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๊น?
๋น๋ ์บ์์ ๋ํ ๋ณด๋ค ๊ฐ๋ ฅํ๊ณ ์ธ๋ถํ๋ ์ ์ด๊ฐ ํ์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ํ์ฌ๋ก์๋ ์ด๊ฒ์ ์ฌ์ฉ์์๊ฒ ์ด๋ป๊ฒ ๋ ธ์ถํด์ผ ํ๋์ง ์ ํํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์์ผ๋ก ์ถ์๋ API ํ์ฅ, ํนํ ์ด๋ฆ ์ง์ ๋ฐ ๋ด์ฑ์ ์ฌ์ฉํ๋ฉด ์ด๊ฒ์ด ๋ ์ฌ์์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ๋ฅญํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์
๋๋ค. ํ์ฌ ๋๋ RUN a=a some-command
์ ๊ฐ์ ์ด๋ฆฌ์์ ๊ฒ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์บ์๋ฅผ ๊นจ๊ธฐ ์ํด RUN a=b some-command
์บ์๋ฅผ ๋ ์ ์ ์ดํ๋ฉด CI์ docker๋ฅผ ํจ์ฌ ๋ ํ๋ณตํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@์ค์ดํฌ์ค
--no-cache
๋ฅผ bool์์ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํ๊ณ ๋์ปค์์ ์บ์๋ฅผ ํ๊ดดํ๋ ค๋ ์์น์ ๋ํด ์ ๊ท์์ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
docker build --no-cache "apt-get install" .
IRC์์ ์ด ์ ํํ ๊ธฐ๋ฅ์ ๋์ํ๊ณ ์ ์ํ์ต๋๋ค.
์ญ ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ ํ๋๊ทธ(์: "--uncache")๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ --cached๋ฅผ "--uncache .*"๋ก ํด์๋๋ (๋ ์ด์ ์ฌ์ฉ๋์ง ์๋) bool ํ๋๊ทธ๋ก ์ ์งํ ์ ์์ต๋๋ค.
2014๋
2์ 7์ผ ๊ธ์์ผ ์ค์ 9์ 17๋ถ, Michael Crosby ์๋ฆผ @github.com
์ผ๋ค:
@์ค์ดํฌ์ค
--no-cache
๋ฅผ bool์์ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํ๊ณ ๋์ปค์์ ์บ์๋ฅผ ํ๊ดดํ๋ ค๋ ์์น์ ๋ํด ์ ๊ท์์ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
docker build --no-cache "apt-get install" .
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotcloud/docker/issues/1996#issuecomment -34474686
๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํฉ๋๊น? ๊ธฐ๋ฅ์ ๊ตฌํํ ์ฌ๋์ด ์์ต๋๊น?
๋ค๋ฅธ ์ฌ๋์ด ์์ํ์ง ์์ ๊ฒฝ์ฐ ์ค๋ ์ด๊ฒ์ ๊ตฌํํ๋ ค๊ณ ํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ๋ํ ์์ ์
noCache
ํ๋ buildfile
a๊ฐ๋ฉ๋๋ค *regexp.Regexp
.nil
๊ฐ์ utilizeCache = true
์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.docker build --no-cache
๋ฌธ์์ด์ ์ ๋ฌํ๋ฉด ์ด์ ์ ํจ์ฑ ๊ฒ์ฆ ์ ๊ท์ ๋ฌธ์์ด์ด ์๋ฒ์ ์ ์ก๋ฉ๋๋ค.--no-cache
ํธ์ถํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ .*
buildfile.utilizeCache(cmd []string) bool
์์ ์ฌ์ฉ๋์ด ์บ์๋ฅผ ๋ฌด์ํ๋ ๋ช
๋ น์ ํ์ธํฉ๋๋ค.ํ ๊ฐ์ง: ๋ด๊ฐ ๋ณผ ์ ์๋ ํ flag/mflag ํจํค์ง๋ ๊ฐ์ด ์๋ ๋ฌธ์์ด ํ๋๊ทธ๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก --no-cache
๋ฐ --no-cache some-regex
๋ชจ๋ ์ง์ํ๋ ค๋ฉด ์ถ๊ฐ ์์
์ ์ํํด์ผ ํฉ๋๋ค
๋๋ ์ด๊ฒ์ด ๋ณ๋์ ์๋ก์ด ๊น๋ฐ์ด ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. --no-cache
์ ๋์๊ณผ ๊ตฌ๋ฌธ์ ์ด๋ฏธ ์ ์ ์๋์ด ์์ผ๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด ๋ง์ ๊ณณ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋๋ --break-cache
๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ํฌํํ๊ณ --no-cache
๊ฐ ์ค๋๋ ํ๋ ์ผ์ ์ ํํ ํ๋๋ก ํ ๊ฒ์
๋๋ค(๋ง์ ์ฌ๋๋ค์ด ์์กดํ๊ณ ์ฌ์ ํ ์ํ๋ ๋งค์ฐ ์ ์ฉํ ํ๋์ด๊ธฐ ๋๋ฌธ์).
์ด์จ๋ , IANTM(์ ๋ ๊ด๋ฆฌ์๊ฐ ์๋๋๋ค)์ด๋ฏ๋ก ์ด๊ฒ์ ์ ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ ๋ฟ์ ๋๋ค. :)
@tianon --no-cache
๋ ํ์ฌ bool์ด๋ฏ๋ก ๋จ์ํ ๊ธฐ์กด ๋์์ ํ์ฅํฉ๋๋ค.
docker build --no-cache
- ์ด์ ๊ณผ ๋์ผํ ๋์: ์บ์ ๋ฌด์docker build --no-cache someRegex
- someRegex
์ ์ผ์นํ๋ RUN
๋๋ ADD
๋ช
๋ น์ ๋ฌด์ํฉ๋๋ค.๋ค, ๊ด์ฐฎ์์. ๋ฌธ์ ๋ --no-cache
๊ฐ bool์ด๋ฏ๋ก ๊ธฐ์กด ๋์์ด ์ค์ ๋ก ๋ค์๊ณผ ๊ฐ๋ค๋ ๊ฒ์
๋๋ค.
--no-cache=true
- ์บ์๋ฅผ ๋ช
์์ ์ผ๋ก ๋นํ์ฑํ--no-cache=false
- ๋ช
์์ ์ผ๋ก ์บ์ ํ์ฑํ--no-cache
- --no-cache=true
์ฝ์ด๋ํ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด "true" ๋ฐ "false" ํน์ ์ผ์ด์ค ์ ๊ท์ ๋ฌธ์์ด์ ๋ง๋ค์ด ์ฐ๋ฆฌ ์ค์ค๋ก์๊ฒ ํด๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ํฅํ ์ฌ์ฉ์์๊ฒ ์ ์ฌ์ ์ผ๋ก ๋๋ผ์ด ๋์์ด ์์ฑ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ("์ ๊ท์ 'true' ๋๋ 'false'์ ํจ๊ป --no-cache
์ฌ์ฉํ๋ฉด ์์๋๋ก ์๋ํ์ง ์์ต๋๋ค!")
@tianon ๋ค ๋ง์ต๋๋ค. ๋น ๋ฅด๊ฒ ์ดํด๋ณด๊ณ ์ฌ๋๋ค์ =true/false๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ทํ๊ฐ ์ ์ํ ๋๋ก ์ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋๋ก PR ์ ์์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค . ์ ์ง ๊ด๋ฆฌ์๋ ์ด๋ป๊ฒ ์๊ฐํฉ๋๊น(
@wagerlabs ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝ์ฐ +1
@crosbymichael , @timruffles Dockerfile ์์ฑ์๊ฐ ์บ์ํด์ผ ํ ๋น๋ ๋จ๊ณ์ ์บ์ํ์ง ๋ง์์ผ ํ ๋น๋ ๋จ๊ณ๋ฅผ ๊ฒฐ์ ํ๋ฉด ๋
์ผ๋ถ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ๊ธฐ์กด ์ด๋ฏธ์ง ๊ณ์ธต์ ์ฌ๊ตฌ์ถํ๋ ค๋ ๊ธฐ์ ํ๊ฒฝ์ ๊ณ ๋ คํ์ญ์์ค. ๊ธฐ์กด Dockerfile ํธ๋ฆฌ๋ ๋ช ๋ ์ ์ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ค ์ ์์ต๋๋ค.
@wagerlabs ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝ์ฐ +1
@wagerlabs ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝ์ฐ +1์ด์ง๋ง ์๊ฐ ๊ฐ๊ฒฉ์ ๋ฒ์คํธ๋ฅผ ์บ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ํจ์ฌ ๋ ์ข์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด
CACHE [interval | OFF]
RUN apt-get update
CACHE ON
์ด๊ฒ์ด ์ปจํ ์ด๋๊ฐ ๋น๊ฒฐ์ ์ ์ด๋ผ๋ ๊ฐ๋ ์ ์ด๊ธ๋ ์ ์๋ค๋ ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ํ์ดํ๋ผ์ธ์ ์๋ํ๋ ํ ์คํธ๊ฐ ์ ๋์ด ์๋ ์ฐ์ ๋ฐฐํฌ ์๋๋ฆฌ์ค์์ ํ๊ณ ์ถ์ ์ผ๊ณผ ์ ํํ ์ผ์นํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ํ์ฌ ๋์ปค ๋น๋๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ๋ ์คํฌ๋ฆฝํธ์์ ์บ์ ๋ฒ์คํฐ๋ฅผ ์์ฑํ๊ณ ์บ์ ๋ฒ์คํธ๋ฅผ ๊ฐ์ ์คํํ๊ธฐ ์ํด dockerfile์ ์ถ๊ฐํฉ๋๋ค.
FROM ubuntu:13.10
ADD ./files/cachebusters/per-day /root/cachebuster
...
ADD ./files/cachebusters/per-build /root/cachebuster
RUN git clone [email protected]:cressie176/my-project.git /root/my-project
์ง์์ ์ธ ํตํฉ์ ์ํด ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉฐ ์บ์์ ํน์ ์์์ ์๊ฐ ์ด๊ณผ๋ฅผ ์ค์ ํ๋ ๊ธฐ๋ฅ์ ์ ๋ง ์ ์ฉํ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์์ผ๋ฉด ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๋งค๋ฒ ์ ์ฒด ์ฌ๊ตฌ์ถ์ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ฌด ๋๋ฆฝ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋์ ํ์ฌ ๊ณํ์ ๋ฐ์ฌ๋ฆผ๋ ์ซ์๊ฐ ์ ํํ ๋ ์บ์ ์์๋ฅผ ๋ฌดํจํํ๊ธฐ ์ํด ๋ง์ง๋ง 15๋ถ์ผ๋ก ๋ฐ์ฌ๋ฆผ๋ ์์ฑ๋ ํ๊ณผ ํจ๊ป RUN echo 2014-04-17-00:15:00
์ ๊ฐ์ ๋ช
๋ น์ ๋์ ์ผ๋ก ์ฃผ์
ํ๋ ๊ฒ์
๋๋ค. 15๋ถ๋ง๋ค. ๋งค๋ฒ dockerfile์ ์์ฑํ๋ ์คํฌ๋ฆฝํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ ์๊ฒ ํจ๊ณผ์ ์ด์ง๋ง ํด๋น ์คํฌ๋ฆฝํธ ์์ด๋ ์๋ํ์ง ์์ต๋๋ค.
๊ธฐ๋ฅ์ ๋ํด +1์ ๋๋ค.
์ ๋ ์ด ๊ธฐ๋ฅ์ ํฌํํ๊ณ ์ถ์ต๋๋ค. ๋ง์คํฐ ๋ธ๋์น์์๋ง ์
๋ฐ์ดํธ๋๋ git ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ปจํ
์ด๋์ ์ผ๋ถ๋ฅผ ๋น๋ํ ๋ ์บ์๋ ์ฑ๊ฐ์ ์ผ์
๋๋ค.
:+1:
@hiroprotagonist ๊ฐ๋ git pull
๋น์ ์ ENTRYPOINT
ํ์ ๋์์?
@amarnus ๋๋ ๊ฐ์ง๊ณ ์๋ ์์ด๋์ด @tfoote์์ด ์ ์ฌํ ํด๊ฒฐํ์ต๋๋ค. ์ ๋ jenkins ์์ ์์ ๋น๋๋ฅผ ์คํํ๊ณ ์์ผ๋ฉฐ docker build ๋ช ๋ น์ ์ง์ ์คํํ๋ ๋์ ํ ํ๋ฆฟ์์ Dockerfile์ ์์ฑํ๊ณ git ๋ช ๋ น ์์ 'RUN echo currentsMillies' ์ค์ ์ถ๊ฐํ๋ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ํฉ๋๋ค. sed์ ํ์ดํ ๋๋ถ์ ์ด๊ฒ์ ๋ช ๋ถ ๋ง์ ๋๋ฌ์ต๋๋ค. ์ด์จ๋ ๋๋ ์ฌ์ ํ Dockerfile ์์ฒด์ ์ผ๋ถ๋ก ์ด ๊ธฐ๋ฅ์ ์ ํธํฉ๋๋ค.
@wagerlabs ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋ด +1 ์ถ๊ฐ. CI์๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋น๋ถ๊ฐ์ ๋จ์ํ ๋์ ์์ฝ RUN ๋ฌธ์ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ด ๊ธฐ๋ฅ์ด ๋ง์์ ๋ญ๋๋ค.
์บ์ ON/OFF์ ๊ฒฝ์ฐ +1์ ๋๋ค. ์ ์ฌ์ฉ ์ฌ๋ก๋ CI ์๋ํ์ ๋๋ค.
+1, ํนํ @cressie176 ์ ์์์์ ๊ฐ์ด ์คํ ๋ช ๋ น ์บ์ ๊ฐ๊ฒฉ์ ์ค์ ํ๋ ๊ธฐ๋ฅ
"์: ์ ์ฅ์ ์ ๋ฐ์ดํธ ๋๋ ์๊ฒฉ ํ์ผ ๋ค์ด๋ก๋"
+1
๋๊ตฐ๊ฐ์๊ฒ ๋์์ด๋๋ค๋ฉด ๋ค์์ Jenkins ๋น๋์์ ์ฌ์ฉํ๋ ์ฝ๋์ ๋๋ค.
echo "Using build $BUILD_NUMBER for docker cachebusting"
sed -i s/cachebust_[0-9]*/cachebust_"$BUILD_NUMBER"/g Dockerfile
์บ์ ON/OFF์ ๊ฒฝ์ฐ +1
CACHE ON/OFF ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ฅํ ๋์์ผ๋ก "ALWAYS"์ ๊ฐ์ ์ถ๊ฐ ํค์๋๋ ์ด๋ป์ต๋๊น? ํค์๋๋ ๊ธฐ์กด ๋ช ๋ น(์: "ALWAYS RUN" ๋๋ "ALWAYS ADD")๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. ์๋์ ์ผ๋ก "ALWAYS" ํค์๋๋ ์ธ์ ๋ช ๋ น์ ์๋ฃํ๊ธฐ ์ํด ์บ์๋ก ์ด๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฐ๊ณผ๋ฅผ CACHE(์์์ ์ผ๋ก ๋์ผํ ํ์ด ์คํ๋ ๋ค๋ฅธ ์๊ฐ์ ๋ํ ์บ์)์ ๋น๊ตํ์ฌ ALWAYS ๋ช ๋ น์ ๊ฒฐ๊ณผ๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ์บ์๋ ์ด๋ฏธ์ง์ ์ฐ๊ฒฐํฉ๋๋ค.
๊ทผ๋ณธ์ ์ธ ํ์์ฑ์ "๋ฉฑ๋ฑ์ฑ์ด ์๋ ๋ช ๋ น" ์ ์๋ณํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ALWAYS ๋ช ๋ น์ ์ด๋ฅผ ๋งค์ฐ ๋ช ์์ ์ผ๋ก ์ํํฉ๋๋ค. ๋ด ์ธ์์ CACHE ON/OFF ์ ๊ทผ ๋ฐฉ์์ด ๋๊ฐ์ด ์ ์๋ํ ์ ์์ง๋ง ์ฝ๋ ๋ธ๋ก์ ๋ง์ด ์ ํํด์ผ ํ ์๋ ์๋ค๋ ๊ฒ์ ๋๋ค(์ฌ์ฉ์๊ฐ ์ค์ ๋ก ํ์ํ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ค์ ์ฐจ๋จํ๋๋ก ๊ถ์ฅํ ์ ์์).
๋๋ ๋ํ ALWAYS ๋๋ CACHE 1 WEEK ADD์ ๊ฐ์ ๋ช ๋ น ์ ๋์ฌ์ ๋ ๊ฐ๊น์ต๋๋ค ...
๊ทธ๋์ ๋๋ ์ ์ ๋์ ์ด ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช์๊ณ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๋์ ๋์์ด ๋ ์ ์๋๋ก ๋ด ์์ ์ ๊ณต์ ํ๊ณ ์ถ์์ต๋๋ค. ๋น๋ ํธ์ถ์ ๋์ปค ํ์ผ ์ธ๋ถ์ ์๋ฌด๊ฒ๋ ์ถ๊ฐํ๊ฑฐ๋ ๋งค๋ฒ ํ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ง๋ ์์์ต๋๋ค. ์ด์จ๋ ์ด๊ฒ์ ์ด๋ฆฌ์์ ์์ด์ง๋ง ์ถ๊ฐ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์บ์๋ฅผ ํ๊ดดํ๊ณ ํ์ผ ์กฐ์์ด ํ์ํ์ง ์์ต๋๋ค.
From ubuntu:14.04
RUN apt-get -yqq update
RUN apt-get -yqq install git
RUN git clone https://github.com/coreos/fleet
ADD http://www.random.org/strings/?num=10&len=8&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new uuid
RUN cd fleet && git pull
๋ถ๋ช ํ ์์ ์ ์ฌ์ฉ ์ฌ๋ก์ ๋คํธ์ํฌ ์์ ์์ฑ์ ์ ํํ ์ ์์ต๋๋ค. ์ด์จ๋ ๊ทธ๊ฒ์ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@wagerlabs ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋ ๋ค๋ฅธ +1
๊ธฐ๋ฅ์ ๋ ๋ค๋ฅธ +1. ํํธ @cruisibesarescondev ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ฅ ์์ฒญ์ ๋ํด ํ ๋ฒ ๋ +1ํฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด @cruisibesarecondev ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ธฐ๋ฅ์ ๋ํ ๋ ๋ค๋ฅธ +1์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด @cruisibesarescondev ๋ฅผ
ALWAYS ํค์๋๋ ํนํ ๋จ์ํ๊ณ ๋ช ํํ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ข์ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฝ๊ฐ ๋ ๋ณต์กํ ์ ๊ทผ ๋ฐฉ์์ ์ต์ ์๊ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค(buildfarm ๋๋ ์ง์์ ํตํฉ๊ณผ ๊ฐ์ ์์ ์ ์ ์ฉํจ). ์ด๋ฅผ ์ํด XXX๊ฐ ์๊ฐ ์ด๊ณผ์ธ "EVERY XXX" ๊ตฌ๋ฌธ์ ์ ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ช ๋ น์ ์บ์๊ฐ ๋น๋๋ ์ดํ๋ก XXX๋ณด๋ค ๊ธธ๋ฉด ๋ช ๋ น์ ๋ค์ ์คํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ๋ ฅ์ด ๋ณ๊ฒฝ๋์๋์ง ํ์ธํ์ญ์์ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์์ผ๋ฉด ๋ง์ง๋ง ์ ๋ฐ์ดํธ ์๊ฐ์ ๊ธฐ๋กํ์ฌ ์บ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ EVERY 0์ด ALWAYS์ ๋์ผํจ์ ์๋ฏธํฉ๋๋ค.
ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํด ํ์ด์ฌ์์ ๋น ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ Dockerfile์ ์์ฑํ๊ณ ๋ ๋ฒ์ ์ฐ์ ์คํ์์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์งํ์ง ๋ชปํ์ง๋ง ๋งค XXX์ด๋ง๋ค ์ฌํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฐ์ ์คํํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ์์ ๊ฐ์ด ์๋ํ๋ ๋ค์ ์ค๋ํซ์ ํฌํจํฉ๋๋ค. ์๋จ:
@{
import time
def cache_buster(seconds):
ts = time.time()
return ts - ts % seconds
}@
์ฌ์คํ์ ๊ฐ์ ํ๊ณ ์ถ์ ๊ณณ:
RUN echo @(cache_buster(60))
Dockerfile์์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
RUN echo 1407705360.0
๋ณด์๋ค์ํผ ๊ฐ์ฅ ๊ฐ๊น์ด 60์ผ๋ก ๋ฐ์ฌ๋ฆผ๋๋ฏ๋ก 60์ด๊ฐ ์ง๋๊ฐ ๋๋ง๋ค ๋ค์ ์คํ์ ๋ค์ ๋ช ๋ น์ ๋ชจ๋ ๋ค์ ์คํํฉ๋๋ค.
ALWAYS ๊ตฌ๋ฌธ์ ๊ฒฝ์ฐ +1์ ๋๋ค. CACHE ON/CACHE OFF์ ๊ฒฝ์ฐ +.5.
ALWAYS ๊ตฌ๋ฌธ์ ๊ฒฝ์ฐ +1์ ๋๋ค.
์, ALWAYS ๊ตฌ๋ฌธ์ ๋งค์ฐ ์ง๊ด์ ์ผ๋ก ๋ณด์ ๋๋ค.
์ ๋ CACHE ON/OFF๊ฐ ๋ง์์ ๋ค์ง ์์ต๋๋ค. ์๋ํ๋ฉด ๋ผ์ธ์ "์์ฒด ํฌํจ"๋์ด์ผ ํ๊ณ Dockerfiles์ ๋ธ๋ก์ ์ถ๊ฐํ๋ฉด ๋ง์ "๋ฌธ์ "๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค(์: ๋ณํฉํ ๋ "์ด ๋ผ์ธ์ด ์บ์๋ก ๋ฎ์ฌ ์์ต๋๊น?"๋ฅผ ํ์ธํด์ผ ํ๋ ๊ฒ๊ณผ ๊ฐ์). .).
@kuon USER
๋ฐ WORKDIR
์ ๊ฐ์ด ํ์ ๋ช
๋ น์ ์ํฅ์ ์ฃผ๋ ๋ช
๋ น์ด ์ด๋ฏธ ๋ง์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค, ๋ง์ต๋๋ค. ํ์ง๋ง ๊ฐ์ ์ด์ ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋๋ ํญ์ RUN cd ... &&
๋๋ RUN su -c ...&&
ํฉ๋๋ค.
๋ธ๋ก ํ๊ธฐ๋ฒ์ ์ ํธํฉ๋๋ค.
CACHE OFF {
RUN ...
}
์ด๊ฒ์ ๋ ๋ช
์์ ์ด๋ฉฐ ์ค์๋ก CACHE OFF
ํ์ ์ฝ์
ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค(๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ๋ฐ์ํจ).
๋ด๊ฐ ์ง๋์น๊ฒ ์๊ฐํ ์๋ ์์ง๋ง Dockerfile์ ์ค์ ๋ก ํ๋ก๋์ ์์ ์คํ๋์ง ์์ผ๋ฏ๋ก(์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋๋ง) ๋น๋ํ ๋ ์บ์๋ฅผ ๋นํ์ฑํํด๋ ์ค์ ๋ก ๋ง์ ํด๋ฅผ ๋ผ์น์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Dockerfiles๊ฐ ์ ๋ง ์ ํ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค(์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ์ง ์๊ณ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด ๋จ์ผ RUN์์ &&๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ช ๋ น์ ์ฐ๊ฒฐํด์ผ ํจ...).
์ด ๋ฌธ์ ๋ ์๋ก์ด Dockerfile ํ์์ ๊ธฐํ์ผ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ ๋งํ ๋ด์ฉ์ผ๋ก ๋์๊ฐ๊ณ ์ถ์ต๋๋ค. ๋๋ @shykes ๊ฐ ๋ค๋ฅธ ๋ฌธ์ https://github.com/docker/docker/pull/2266 ์์ ๋งํ ๊ฒ์ ์ฝ์๊ณ ๊ทธ์๊ฒ๋ ๋์ํฉ๋๋ค(Dockerfile์ ์ธ์ด์ ๊ฐ์ ์ ๋ง ๊ฐ๋จํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ ์งํด์ผ ํจ).
๋๋ ๋ณ์๋ ๊ทธ์ ๋น์ทํ ๊ฒ์ ์ํ๋ค๊ณ ๋งํ์ง๋ง ๊ทธ๊ฒ์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ค๋ฃฐ ์ ์์ง๋ง ์ด ๊ฒฝ์ฐ Dockerfile์ ๊ฐ ์ค์ ์์ฒด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์:
NOIMAGE ALWAYS RUN USER:jon apt-get update
ํญ์ ๋ช ๋ น(์บ์ ์์)์ ์คํํ์ง๋ง ์ด๋ฏธ์ง๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉ์ jon์ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฌํ ์ข ๋ฅ์ ์์ฒด ํฌํจ ๋ผ์ธ์ ๋ค๋ฅธ ์ธ์ด์์ ํจ์ฌ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ์ปจํ ์คํธ(์ฌ์ฉ์, ์บ์, ์์ ๋๋ ํฐ๋ฆฌ)์ ๋ํด ๊ฑฑ์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
ํธ์๋ฅผ ์ํด RUN!
ํ ์ ์์ต๋๊น?
์ด๊ฒ์ ๋ํ ์ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์บ์๋ฅผ ์ ํ์ ์ผ๋ก ๋นํ์ฑํํ๋ฉด ๋งค์ฐ ์ ์ฉํฉ๋๋ค. awscli ๋ช ๋ น(amazon AWS ํดํท์์)์ ํตํด ์๊ฒฉ amazon s3 ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ์ผ์ ๊ฐ์ ธ์ค๊ณ ADD ๋ช ๋ น์ ํตํด ์บ์๋ฅผ ๋ฒ์คํธํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค(์ ์ด๋ Dockerfile์ ํธ์งํ์ง ์๊ณ ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ ์ ์์ต๋๋ค. ํธ๋ฆฌ๊ฑฐ). RUN์ ์ฌ์ฉํ ๋ ์บ์๋ฅผ ์ ํ์ ์ผ๋ก ๋ฒ์คํธํ๊ธฐ ์ํด ์ฌ์ฉ์์๊ฒ ์ ์ด๊ถ์ ๋๋ ค์ฃผ์ด์ผ ํ๋ ๊ฐ๋ ฅํ ๊ฒฝ์ฐ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๊ตฌ๋ ์ง ๋์๊ฒ ์ ์์ด ์์ผ๋ฉด ๊ธฐ๊บผ์ด ๋ฃ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ํฌ๊ฒ ํ์๋ก ํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ์กฐ๊ธ ๋ ์ฌ๋ ค๋ณด๊ณ ์ถ์์ต๋๋ค.
์ฌ์ ํ ALWAYS
๊ตฌ๋ฌธ์ด ์ด์์ ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
๊ฐ๋จํ BREAK
๋ฌธ์ ์ด๋ป์ต๋๊น?
@cpuguy83 ์ ๋ด ํน์ ์ฌ์ฉ ์ฌ๋ก์์๋ ์๋ํฉ๋๋ค.
๊ธฐ์ ์ ์ผ๋ก ํ๋์ ๋ช ๋ น๋ง ์บ์ํ์ง ์๊ณ ๋๋จธ์ง ๋ช ๋ น์ ์บ์ํ ์ ์๋์ง ํ์คํ์ง ์์ต๋๋ค. docker๊ฐ ์ฆ๋ถ diff๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์๋ง ์๋ ๊ฒ์ ๋๋ค.
BREAK
๋ฅผ ์ง์ํ๋ฉด @CheRuisiBesares์ ์ ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ๊ฐ ๋์ผํฉ๋๋ค.
๋ด ์ด์ ๊ฒ์๋ฌผ๊ณผ ๊ด๋ จํ์ฌ ์ค์ ๋ก ์คํฌ๋ฆฝํธ์ ํด๋น ์ง์ ๋ถํฐ ์บ์๋ฅผ ํ๊ดดํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๊ณ ๋๋จธ์ง๋ ์ง๋ฅํ ์คํฌ๋ฆฝํธ ์ค๊ณ์ ๋ฌ๋ ค ์์ต๋๋ค(๋๋ถ๋ถ์ ์ฌ๋๋ค์ ์๊ตฌ ์ฌํญ์ ํด๊ฒฐํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค). ์บ์ ๋ฒ์คํธ๋ฅผ ์ ํ์ ์ผ๋ก ๋นํ์ฑํํ๋ ๋์ ์ด๊ฒ์ด ๊ฐ๋ฅํฉ๋๊น?
@orrery ํด๋น ๋น๋ ๋จ๊ณ _์ ์_ COPY
๋ฅผ ์ถ๊ฐํ์ฌ ์บ์๋ฅผ " ํ๊ดด "ํ ์ ์์ต๋๋ค. ๋ณต์ฌ๋ ํ์ผ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ทธ ์ดํ์ ๋ชจ๋ ๋จ๊ณ๋ ๋ ์ด์ ์บ์๋ฅผ ์ฌ์ฉํ์ง ์์์ผ ํฉ๋๋ค( ์ด ์น์
์ฐธ์กฐ ). ๋๋ฌ์ด ์์์์ง๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
ALWAYS
(๋๋ EVERY # DAYS
์ ๊ฐ์ ์ ์ฌํ ๊ฐ๋
)์ ํต์ฌ์ ์ฒจ๋ถ๋ ๋ช
๋ น ์ดํ์ ์บ์ ๋น๊ต์
๋๋ค. ๋ ์์ ์ ์ํด(๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค๋ ๊ฐ์ ), ๋ชฉํ๋ ์บ์ ์์ฒด๋ฅผ ํ๊ดดํ๋ ๊ฒ์ด ์๋๋๋ค.
์ด๊ฒ์ ALWAYS
์ ์ถ๋ ฅ์ด ์บ์๋ ๋ฒ์ ๊ณผ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ํ์ ๋ช
๋ น์ ๋ํ ์บ์๋ฅผ ํ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ @hellais ์ ์ฃผ์์ ์ฒ๋ฆฌํฉ๋๋ค(๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฝ๊ฒ ๋ฐ์ํ ์ ์์).
๋น์ฐํ ๋์ผํ ๋
ผ๋ฆฌ๊ฐ CACHE ON/OFF ๋ชจ๋ธ์ _ํฌํจ๋ _ ์ ์์ต๋๋ค. ์บ์์์ ๋น๊ต๋ ๋ชจ๋ ํ์ ๋ช
๋ น์ ๋ค์ ์คํํ๋ ๊ฒ๋ณด๋ค ์ ๋ ดํ ์ ์์ง๋ง ์ฌ์ ํ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค. CACHE ON/OFF ๋ธ๋ก์ด ์ฌ์ฉ์๊ฐ OFF ๋ธ๋ก์ ์ถ๊ฐ ๋ช
๋ น์ ํฌํจํ๋๋ก ๊ถ์ฅํ๋ ๊ฒฝ์ฐ( ALWAYS
์์๋ ๋ฐ์ํ ์ ์๋ ์์
) ์ฑ๋ฅ์ ์๋นํ ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
@tfoote ์ ์ ํํ ๊ฐ์ ์ํฉ์
EVERY
๊ตฌ๋ฌธ์ ๊ฒฝ์ฐ +1์
๋๋ค. ALWAYS
๊ตฌ๋ฌธ๋ ์์
์ ์๋ฃํฉ๋๋ค.
@claytondaley ์ข์ ์ง์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๋ น์ ๋ํ ์บ์ฑ์ ์์ ํ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ ๊ฒ์ ์ฌ์ ํ โโ์ค์ํฉ๋๋ค. Docker์๋ ๋ณธ์ง์ ์ผ๋ก ๋ณด์ด์ง ์๋ ์จ๊ฒจ์ง ์ํ๊ฐ ํญ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ช ๋ น์ ์คํํ๋ฉด ์๊ฒฉ ์๋ฒ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
@mkoval , ALWAYS
๋ฅผ ์ฌ์ฉํ๋ ์ค์ํ ์๊ฐ์ผ๋ก _์จ๊น ์ํ๋ฅผ _ ์์ฑํ๋ ๊ฒ์ ๋ํ ์ข์ ์ ์ ์ง์ ํ์
จ์ง๋ง ์บ์ ์ฌ๊ฐ์ ๋ํ ์ ๋
ผ๋ฆฌ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด(๋ค์ ์ฌ์ํ๋๋ผ๋) ํ์ฌ ์์คํ
์ ์
๊ทธ๋ ์ด๋ํ๋ ๋ช
๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ALWAYS
์คํํด์ผ ํจ)๋ค์ ๋ช ๋ น์ ์จ๊ฒจ์ง ์ํ๊ฐ ํฌํจ๋์ง ์์ ๊ฒฝ์ฐ(์ฌ์ํ๊ฒ๋ ์ปจํ ์ด๋์ mv ๋ช ๋ น) ์บ์๋ 100% ์ ๋ขฐํ ์ ์์ต๋๋ค. ๋์ผํ ์ปจํ ์ด๋, ๋์ผํ ๋ช ๋ น, ์จ๊ฒจ์ง ์ ๋ณด์ ๋ํ ์ข ์์ฑ์ด ์์ต๋๋ค.
๋ค์ ๋ช
๋ น(๋๋ ํ์ ๋ช
๋ น)์ ์จ๊ฒจ์ง ์ ๋ณด๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ ์ปจํ
์ด๋๊ฐ ์บ์์ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์บ์๋ฅผ ์ฌ๊ฐํ๊ณ ALWAYS
ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
@claytondaley ๊ทํ์ ์๋ฃจ์ ์ ๋์๊ฒ ๋งค์ฐ ์ฐ์ํ๊ณ ํจ์จ์ ์ผ๋ก ๋ณด์ ๋๋ค. ์ด๊ฒ์ด ๊ตฌํ๋๋ค๋ฉด ๋งค์ฐ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. :+1: :๋ฌธ์ด:
ALWAYS ๋ฐ EVERY X ์ ์๋ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ฅ์ ๋ํด +1์ ๋๋ค. CACHE ON/OFF๋ ์ฝ๊ฐ ์ด์ํ์ง๋ง ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๋๋ ๋ํ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์บ์๋ฅผ ์ฌ๊ฐํ์๋ @claytondaley ์ ์ ์์ ์ ๋ง ์ข์ํฉ๋๋ค.
ALWAYS ๊ตฌ๋ฌธ์ ๊ฒฝ์ฐ +1์ ๋๋ค. ํนํ git repo์ ํ ์ฝ๋์ ๋ํด.
+1 ์ด๋ฌํ ์๋ฃจ์ ์ ๋ํด.
์กฐ๊ธ ํผ๋์ค๋ฝ์ต๋๋ค. ์บ์ฑ์ด ๊บผ์ง ํ ๋ค์ ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ผ๋จ ๊ทธ๊ฒ์ ๋๊ณ ์ปจํ ์ด๋์์ ์ด๋ค ์ข ๋ฅ์ ๋ณ๊ฒฝ์ ์ํํ๋ฉด ์บ์ฑ์ ๋ค์ ์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์ฑ์ด ๊บผ์ง ๋์ ์คํ๋ Dockerfile ๋ช ๋ น์ ์ํด ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์ฌ๋ผ์ง์ง ์์๊น์? ์ฐ๋ฆฌ๊ฐ ์บ์ฑ์ ํ ์ ์์๋ ์ด์ ๋ ์คํ๋ ์ด์ ๋ช ๋ น์ ์ ์ฒด ๋ชฉ๋ก์ ์ ํํ ์๊ณ ์๊ณ ์ปจํ ์ด๋์ ์๋ ๋ด์ฉ์ด ์ ํํ ๋์ผํ๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ์บ์ฑ์ ๋๋ฉด (๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ ์กฐํ ์ธก๋ฉด์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค) ๊ทธ ๋ณด์ฅ์ ๋ ๋ ค ๋ฒ๋ฆฌ์ง ์์ต๋๊น? ์๋๋ฉด ์บ์๋ฅผ ์ฑ์ฐ์ง ์๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๊น?
์ ์ ์ฌํญ์ ๋ํ ๋์ ์ดํด๋ Dockerfile ๋ช ๋ น์ ์ผ๋ถ๋ก "ํญ์"์ ์ง์ ํ์ฌ ํญ์ ๋จ๊ณ๋ฅผ ๋ค์ ์คํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด "RUN ALWAYS git clone https://example.com/myrepo.git "์ ํญ์ ์คํ๋ฉ๋๋ค(๋ฐ๋ผ์ ํญ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณต์ ). ๊ทธ๋ฐ ๋ค์ @claytondaley ๊ฐ ์ ์ํ๋ ๊ฒ์ ์ด ๋ช ๋ น์ด ๋ค์ ์คํ๋ ํ Docker๊ฐ ์บ์์ ๋ํด ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฒดํฌ์ฌ์ด ๋์ผํ๋ฉด(์ฆ, ๋ณต์ ๋ ์ ์ฅ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ด ์ต์ ๊ณ์ธต์ด ์บ์์ ๋์ผํ ๊ณ์ธต๊ณผ ๋์ผํ ๊ฒฝ์ฐ) ์บ์๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์บ์๊ฐ ๋ฌดํจํ๋๋ฉด ์ดํ์ ๋ชจ๋ ๋จ๊ณ์์ ์บ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ง์ด ๋ง์ต๋๋ค. ์ด๋ฌํ ์ ์์ ํตํด ์บ์๋ฅผ ์ฌ์ฉํ ์๊ธฐ๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ผ๋ฉฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์บ์์์ ๋ค์ ์์ํ๋ ๊ฒ์ด ํ๋ช ํฉ๋๋ค.
@curtiszimmerman... ์ ํํ
@duglin... ์ํ์ ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ด๋์ด๊ฐ ๋ ๋ช
ํํด์ง ์ ์์ต๋๋ค. ์บ์ (์ด ๋งฅ๋ฝ์์)์ ๊ฒฐ๊ณผ์ ๋ถ๊ณผ ๋ฉ๋ชจ๋ฆฌ์
๋๋ค action B
์ ์ ์ฉ ํ ๋ state A
๋น์ ์ด ๊ทธ๊ฒ์ ๋ค์ ์ฒ๋ฆฌ ํ ํ์๊ฐ ์์ต๋๋ค. ์ผ๋ จ์ ๋ช
๋ น์ ์คํํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
6
* x
์ ๊ฐ์น x
์์์์ repo์์ ๋ค์ด๋ก๋ (๋ฐ๋ผ์ ๋ณ๊ฒฝ ๋ ์ ์์ต๋๋ค)๋ฅผ+ 12
๋ช
๋ น์ ์ฒ์ ์คํํ ๋ x
๋ 8์ด๋ฏ๋ก ๋ค์ ์ํ์ค๋ฅผ ์ป์ต๋๋ค.
6
48
( * x
๊ฐ 6
์ ์ฉ๋ ๊ฒฐ๊ณผ)60
( + 12
๊ฐ 48
์ ์ฉ๋ ๊ฒฐ๊ณผ)๋ด ์์คํ
์ด 48
๋ค์ ๋๋ฌํ๋ฉด(์์์ ๊ด๊ณ์์ด)... ๊ทธ๋ฆฌ๊ณ + 12
๋ช
๋ น์ด ์ฃผ์ด์ง๋ฉด ์ฒ๋ฆฌ๋ฅผ ๋ค์ ์ํํ ํ์๊ฐ ์์ต๋๋ค. ๋ด ์บ์๋ ์ด ๋ช
๋ น์ ๊ฒฐ๊ณผ๊ฐ 60
์์ ์๊ณ ์์ต๋๋ค.
์ด๋ ค์ด ๋ถ๋ถ์ ๋์ผํ ์ํ( 48
)์ ๋ค์ ์์ ๋๋ฅผ ์์๋ด๋ ๊ฒ์
๋๋ค.
6
)์ ์๊ณ ๋ช
๋ น(์: * x
)์ ์น ๋๋ง๋ค ์ฐ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ผํ ์ํ์ ์์๋ ๋ง์ง๋ง ์๊ฐ(๋๋ ์ฌ๋ฌ ๋ฒ)์ ์บ์์ ๋น๊ตํฉ๋๋ค. ๊ฐ์ ๋ช
๋ น์ ์คํํฉ๋๋ค. ์ด ํ๋ก์ธ์ค ์ดํ์ ์์คํ
์ํ๊ฐ ๋์ผํ๋ฉด(์: ์ฌ์ ํ 48
) ์บ์๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ๋ค์ ๋ช
๋ น์ด ์ฌ์ ํ + 12
์ด๋ฉด ์ฒ๋ฆฌํ๋ ๋์ ์บ์์์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.@claytondaley ํ์ง๋ง ํ์ฌ ์ํ๋ฅผ ์ด๋ป๊ฒ ๊ฒฐ์ ํ๋์ง ์ดํดํ ์ ์์ต๋๋ค. ๋น์ ์ด ๋งํ๋ฏ์ด ์ฐ๋ฆฌ๋ ์ปจํ ์ด๋์ ์๋ ๋ชจ๋ ํ์ผ์ ๋น๊ตํ์ง ์์ต๋๋ค. ์ด์ ์บ์๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ ์ปจํ ์ด๋์ ์๋ ค์ง ๋ชจ๋ ์์ ์ปจํ ์ด๋์ ๋ํด ์คํํ๋ ค๋ ๋ค์ ๋ช ๋ น์ strcmpํ๋ ๊ฒ์ ๋๋ค. ํ๋ฆ์์ ์ปจํ ์ด๋๋ฅผ ๊ฑด๋๋ฐ๋ ์๊ฐ ํ์ฌ ์ปจํ ์ด๋๊ฐ ํ์ผ ์์คํ ์ ๋ชจ๋ ํ์ผ์ ํ์ธํ์ง ์๊ณ ์บ์๋ ๋ค๋ฅธ ์ปจํ ์ด๋์ ๊ฐ๋ค๊ณ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋ง๋ ๋๋ ๋น์ ์ด ํ๋ ์ผ์ ๋ถ๋ง์ ํ์ง ์์ ๊ฒ์ ๋๋ค.
๋ค์ ๋งํ๊ฒ ์ต๋๋ค. ์์์ ์ปจํ ์ด๋(์บ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ํ๋ ๊ฒ)๊ฐ ์ฃผ์ด์ง๋ฉด ์บ์์์ ๋ชจ๋ ํ์ผ์ ๋น๊ตํ์ง ์๊ณ ์ผ์นํ๋ ์ปจํ ์ด๋๋ฅผ ์บ์์์ ์ด๋ป๊ฒ ์ฐพ์ ์ ์์ต๋๊น? ์ปจํ ์ด๋?
@claytondaley @duglin "์บ์ ์์" ์์ ์ด ๋ณ๊ฒฝ๋์ง ์์ ์บ์๋ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ค๋ช ํ๋ฏ์ด ์ด๋ ค์ด ๋ฌธ์ ์ ๋๋ค. ๋ํ ๊ผญ ํ์ํ ๊ฒ๋ณด๋ค ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋ช ๋ น์ด ํญ์ ์คํ๋๋๋ก ํ ์ ์๋ ๊ธฐ๋ฅ๋ง ์๋ค๋ฉด ๋ํ ๋์ ์์ด ๊ธฐ์ ๊ฒ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ Dockerfile์ ๊ฐ์ ธ์ต๋๋ค.
RUN install_stuff_take_forever
RUN always_do_it #will not run every time
RUN more_stuff
ํ์ฌ always_do_it
ํ์ ์บ์ ๋ฒ์คํธ๋ฅผ ๊ฐ์ ์คํํ๋๋ก ํ
์คํธ๋ฅผ ํธ์งํ์ง ์๋ ํ ์ฒ์์๋ง ์คํ๋ฉ๋๋ค. ๋๋ ์ฐ๋ฆฌ ๋๋ถ๋ถ์ด more_stuff
๊ฐ ๋๋๋ก ๋ถํ์ํ๊ฒ ์คํ๋๋ค๋ ๊ฒ์ ๊ธฐ๊บผ์ด ๋ฐ์๋ค์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค( always_do_it
๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ install_stuff_take_forever
๋ํ ์บ์๋ฅผ ์ ์งํ ์ ์๋ค๋ฉด).
RUN install_stuff_take_forever
NOCACHE
RUN always_do_it
RUN more_stuff
@pikeas ๋๋ NOCACHE ๋ช ๋ น์ ์์ ํ
๋๋ ๋ค์์ ์๋ฏธํ๋ Docker ์
์ด ๊ฒฝ์ฐ ๋์ผํ ๋ช ๋ น์ ๋ ์ธ์คํด์ค๋ฅผ ๋น๊ตํ๋ ๊ฒ์ด ์๋์ ์ผ๋ก ์ ๋ ดํฉ๋๋ค. ๋งจ ์ ๋ ์ด์ด๋ง ๋น๊ตํ๋ฉด ๋ฉ๋๋ค(๋ชจ๋ ๊ธฐ๋ณธ ๋ ์ด์ด๊ฐ ๊ณต์ ๋๊ธฐ ๋๋ฌธ์). ๋ช ๋ น์ ์ํด ๋ณ๊ฒฝ๋ ํน์ ํ์ผ ๋ชฉ๋ก์ด ์์ต๋๋ค. ํด๋น ํ์ผ๋ง ๋ ์ด์ด์ ํฌํจ๋ฉ๋๋ค. ๋ฌผ๋ก ... ํด๋น ๊ณ์ธต์ ๋ชจ๋ ํ์ผ์ ๋น๊ตํด์ผ ํ์ง๋ง... ์ ์ฒด ํ์ผ ์์คํ ์ ๋น๊ตํ์ง ์์๋ ๋ฉ๋๋ค.
๋ช ๋ น์ด ๋ง์ง๋ง์ผ๋ก ์คํ๋ ์๊ฐ๊ณผ ์ ๋ ์ด์ด๋ง ๋น๊ตํ ์๋ ์์ต๋๋ค(์์ ํ ๊ฒ์ ์๋์ง๋ง).
๋ฌผ๋ก ๋ชจ๋ ์ด์ ๋ฒ์ ์ ๋ํด ํด์ ๊ฒ์ฌ๋ฅผ ์ํํ ์๋ ์์ต๋๋ค... ์ ์ฒด ํ์ผ ๊ฒ์ฌ๊ฐ ๋ค๋ฐ๋ฅด๋... ์ค๋ฒํค๋ ์์ด ์์ ํ ์ง์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
https://github.com/docker/docker/pull/9934 ์ ํ๋จ์ ๋ณด๋ฉด Dockerfile ๋ช
๋ น์ ๋ํ ์ง์ ์ต์
์ ๋ํ ๋
ผ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด ๋ช
๋ น์ ๋ํด "์บ์๋ฅผ ์ฌ์ฉํ์ง ์์"์ ์๋ฏธํ๋ --no-cache ์ต์
์ด ๋ชจ๋(๋๋ ๋จ์ง RUN)์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์:
RUN --no-cache apt-get install -y my-favorite-tool
๊ทธ๋ฌ๋ฉด ๋๋จธ์ง ๋ช
๋ น์ ๋ํด์๋ ์บ์๊ฐ ์๋์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค(์ ์๊ฐ์๋).
์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๊น?
์๋ฏธ์ ์ผ๋ก ๋์ผํ "RUN ALWAYS"์ "RUN --no-cache" ์ค์์ ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๋ ์์ฐ์ค๋ฌ์ด "RUN ALWAYS" ๊ตฌ๋ฌธ์ ์ ํธํฉ๋๋ค. ๋๋ ๊ทธ PR์ ๋ํ ๋ง์ง๋ง ์๊ฒฌ์ ๋์ํฉ๋๋ค. --option์ด ๊ฐ๋ ์ฑ์ ๊นจ๊ณ Dockerfiles๋ฅผ ๋ณด๊ธฐ ํํ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค. ๋ํ Dockerfile ๋ช ๋ น์ ๋ค์ ์ค๋ ์ค์ ๋ช ๋ น๊ณผ ๋งค์ฐ ๊ตฌ๋ณ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. "RUN --no-cache myapp --enable-cache"์ ๊ฐ์ ์ต์ ์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ํํํ๊ธฐ ์์ํ๋ ๋ณต์กํ ๊ตฌ๋ฌธ์ ์๋ฅผ ์์ํด ๋ณด์ญ์์ค.
@curtiszimmerman ๋น์ ์ ์๋ ๋์๊ฒ ๋งค์ฐ ๋ถ๋ช
ํฉ๋๋ค. --no-cache๋ RUN์ฉ์ด๊ณ --enable-cache๋ myapp์ฉ์
๋๋ค. ๋ฐฐ์น๊ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์์ ๋ณด์ญ์์ค.
๋์ปค ์คํ -ti ์ฐ๋ถํฌ ls -la
์ฌ๋๋ค์ -ti๊ฐ '์คํ'์ ์ํ ๊ฒ์ด๊ณ '-la'๊ฐ 'ls'๋ฅผ ์ํ ๊ฒ์์ ์ดํดํฉ๋๋ค. ์ด๊ฒ์ ์ฌ๋๋ค์ด ํธ์ํด ๋ณด์ด๋ ๊ตฌ๋ฌธ์
๋๋ค.
RUN ALWAYS์ ๊ฐ์ ๋ฌธ์ ์ค ํ๋๋ ํ์ฅ์ฑ์
๋๋ค. ๋ชจ๋ Dockerfile ๋ช
๋ น์ ๋ํด ์๋ํ๊ณ ๊ฐ ์ ๋ฌ์ ์ง์ํ ์ ์๋ ๊ตฌ๋ฌธ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋๋ค์ ํน์ ๋ช
๋ น์ ๋ํด USER๋ฅผ ์ง์ ํ๋ ๋ฐ ๊ด์ฌ์ ํ๋ช
ํ์ต๋๋ค.
์ฌ์ฉ์ ์คํ=foo myapp
๊ธฐ์ ์ ์ผ๋ก env var USER๋ฅผ myapp์ ์
ธ ๋ด์์ 'foo'๋ก ์ค์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ๋ชจํธํฉ๋๋ค.
๋์: RUN --user=foo myapp์๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Is: RUN var=foo myapp
์ค์ ๋ฐ env var 'var' ๋๋ ์ผ๋ถ RUN ์ต์
์ ๊ฐ์ ธ์ค๋ ค๋ ์คํ๊ฐ ์์ต๋๊น?
IOW, ๊ธฐ์กด์ ์ ํจํ ๋ช
๋ น IMO์ ๊ฒน์น ํ๋ฅ ์ ์ฐ๋ฆฌ๊ฐ ์ผ์ ์์ํ ๋ ๋จ์ด๋ฅผ ํ์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ ์ต๋๋ค.
์ ๋ ์ค์ ๋ก ์ญ์ EVERY <options> COMMAND
ํฉ๋๋ค. ๋ช ๊ฐ์ง ์ด์ :
RUN ALWAYS
๊ตฌ๋ฌธ์ RUN
๋ช
๋ น ์ธํฐํ๋ฆฌํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ ๋ถํ์ํ๊ฒ ๋ค๋ฆฝ๋๋ค.RUN EVERY 5 days
๊ฒฝ์ฐ ์ด ๋ฌธ์ ๊ฐ ๋ ์ฌ๊ฐํฉ๋๋ค. EVERY์ ์ฒจ๋ถ๋ ์ต์
์ด ๋ ๋ง์ ๋ชจํธ์ฑ์ ์์ฑํ๊ธฐ ๋๋ฌธ์
๋๋ค. EVERY 5 days RUN
์ต์
์ด ์ํฅ์ ๋ฏธ์น๋ ๋ช
๋ น์ ๋ํด ๋ช
ํํฉ๋๋ค. RUN USER usr
๋ USER usr RUN
์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. (1) ๋ช
๋ น ํค์๋๊ฐ ์ ๋ ์ต์
์ด ์๋๊ฑฐ๋ (2) ํค์๋๋ฅผ ์ด์ค์ผ์ดํํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์๋ ํ ์ด๊ฒ์ ๋ถ๋ช
ํฉ๋๋ค.๋ช
๋ น์ ์ต์
( ALWAYS AS user RUN ...
)์ ์ ๋์ฌ๋ก ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ต์
์ GNU ์คํ์ผ์ longopts๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์ ๋ง๋ก ๊ฑฑ์ ํ๊ณ ์์ต๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ๋ค์ ๋๊ฑฐ๋ ์ ์ฝ์ ๋ฐ๋ฅธ ๋๊ณผ ๋งค์ฐ ๋ถ๋ฆฌ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋๋ 20์๊ฐ ํ์ wtf๊ฐ ์งํ๋๊ณ ์๋์ง ๊ถ๊ธํดํ๋ฉด์ ๋ณต์กํ Dockerfile ๋ช
๋ น์ ์์ํ๊ณ ์๋ค๊ณ ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์์ธกํฉ๋๋ค -- ์ ํ๊ถ์ ๊ด๊ณ์์ด ์ผ์ด๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ์์ธกํฉ๋๋ค -- ์ ํ๊ถ์ ๊ด๊ณ์์ด ์ผ์ด๋ ๊ฒ์ ๋๋ค.
๋ฐ๋๋ก ์์ง ๊ฒฐ์ ๋ ๊ฒ์ ์์ต๋๋ค. @duglin ์ด ์ ์ํ๋ ๊ตฌ๋ฌธ์ ์ด์ ์ ์ ์/๊ฒฐ์ ๋ ๊ตฌ๋ฌธ์ ๋ํ _๋ฐ๋ ์ ์_์ ๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ #9934๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋ํ @duglin ์ ๊ทธ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์ฌ๋์ด
๊ฐ๋ ์ฑ์ ๋ํ ์ฐ๋ ค๋ฅผ ๊ณต์ ํ์ง๋ง ์ฌ๋ฌ ์ต์ ์ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ์๋ ๋ค๋ฅธ ๊ตฌ๋ฌธ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๊ฐ๋ ์ฑ์ ์ํด Dockerfile ํ์์ ์ง์ ํ์ฌ ๊ทน๋ณตํ ์ ์์ต๋๋ค. ์ ์ ํ ํ์์ ์ง์ ํ ๋ ๊ฐ๋ ์ฑ์ด ๋ฌธ์ ์ธ์ง ํ ์คํธ/ํ์ธํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ ๋ง์ ์์ ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ค, ์ด์ ๋ํ ๊ทํ์ ์๊ฒฌ์ ํ์ํฉ๋๋ค.
๋๋ Dockerfile ์์ฒด๊ฐ ์บ์ ์์น๋ฅผ ์ ์ํ๋๋ก ํ๋ ๊ฒ์ ๋ํด ์ฌ์ ํ ๋งค์ฐ -1์
๋๋ค.
์ ์ฉํด์ผ ํ๊ณ ์ ์ฉํด์๋ ์ ๋ฉ๋๋ค. ๋๋ ์์ง ์ข์ ์๋ฅผ ๋ณด์ง ๋ชปํ๋ค.
์บ์ ๋ฒ์คํธ๋ก ์ ์ ํ๊ฒ ๋ค์ ์์ฑํ ์ ์๋ Dockerfile ๋ฐ
๊ธฐ๋ณธ ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํด์ผ ํ ๋ ์์ฐ์ค๋ฝ๊ฒ.
ํน์ ์์น์์ ์บ์๋ฅผ ์ค์งํ๊ธฐ ์ํด "๋์ปค ๋น๋"์ ํ๋๊ทธ๊ฐ ์์
ํจ์ฌ ๋ ์ ์ฐํ๊ณ IMO(์บ์ ์ ์ด๋ฅผ ๋ค์
์ด์จ๋ ํด๋น ์บ์๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ
์ด์์์ ์์ ๋์ด๊ฐ๋๋ค.)
@tianon ์ -1์ +1(๋ฐ๋ผ์ -1์ด ๋ฉ๋๋ค!)์ด๊ณ N ๋จ๊ณ์์ ์ค๋จํ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ ๋๋ค. ์บ์๊ฐ ์์๋๋ฉด ์ด์จ๋ ๋๋จธ์ง Dockerfile์ ๋ํด ์์๋๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ์ด๊ฒ์ด ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ๋ํ ์ฃผ์ ์๊ตฌ ์ฌํญ์ docker์ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ด ์ด๋ฏธ์ง์ ์ ์ฅ ๋ฐ ์ ์ก๊ณผ ์ง์ ์ฐ๊ฒฐ๋์ด ํจ์จ์ ์ธ ์บ์ฑ์ด ๊ฐ๋ฅํ์ง๋ง ํจ์ฌ ๋ ํฐ ์ด๋ฏธ์ง์ ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ์์ ํ์!
์ด ๊ธฐ๋ฅ์ ๋ํด ๋ด๊ฐ ์ด๋ป๊ฒ ๋๋ผ๋์ง ๋งํ ํ์๊ฐ ์์ต๋๋ค. ์์ง ํ์คํ์ง ์์ต๋๋ค. ์์งํ ๋งํด์ ๋๊ตฐ๊ฐ๊ฐ ("docker ๋น๋"์์) N ๋จ๊ณ์์ ๋ฉ์ถ๋ผ๊ณ ๋งํ๋ ๊ฒ์ ์ด๋ป๊ฒ ์์ํ์ญ๋๊น? ์ค๋ N ๋จ๊ณ๊ฐ ๋ด์ผ N+1 ๋จ๊ณ๊ฐ ๋ ๋ ๋ถ์์ง๊ธฐ ์ฌ์ด ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๋๋ค์ด ๋น๋ cmd ํ์์ ํด๋น ๋ ์ด๋ธ์ ์ฐธ์กฐํ ์ ์๋๋ก Dockerfile ๋ด์ ์ผ์ข
์ "๋ ์ด๋ธ"์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด Dockerfile์ ๋ํ๋๋ "STOP-CACHING"๋ช
๋ น์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๋ง์ ์ฐจ์ด๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋งค๋ฒ ์บ์๋ฅผ ํ๊ดดํ๋ Dockerfile cmd์ ์ข์ ์๋ ๋ฌด์์
๋๊น?
๊ธ์, ๊ทธ๊ฒ์ด ์ค์ ๋ก ์๋ ๊ทธ๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ๋
ผ์ ๋ ์ด์ ์
๋๋ค.
line-content-based regexp๋ ๊ด์ฐฎ์ ๊ฒ์
๋๋ค (ํนํ
์ด๋ ๋จ๊ณ ๋ฒํธ๋ฅผ ์ ํํ ์๋ ๊ฒ๋ณด๋ค ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
์บ์๋๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค -- ํ์ฌ์ ์ ์ฒด ์ฌ๋ณธ์ ์ฐ๊ณ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
Bash์ Dockerfile ํ์, ๊ฐ์ฌํฉ๋๋ค. D).
Tianon Gravi [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๊ธ์, ๊ทธ๊ฒ์ด ์ค์ ๋ก ์๋ ๊ทธ๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ๋ ผ์ ๋ ์ด์ ์ ๋๋ค.
line-content-based regexp๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค (ํนํ
~๋ถํฐ
์ ํํ ์ด๋ค ๋จ๊ณ ๋ฒํธ๋ฅผ ์๋ ๊ฒ๋ณด๋ค ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
๋
์บ์๋๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค -- ํ์ฌ์ ์ ์ฒด ์ฌ๋ณธ์ ์ฐ๊ณ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
Bash์ Dockerfile ํ์, ๊ฐ์ฌํฉ๋๋ค. D).
ํญ์/์บ์ ํ๊ดด๋ผ๋ ์ด์ ์ ์์ ๋ค์ ๋งํ๊ณ ์ถ์ต๋๋ค.
"RUN"์ "RUN!"์ด์ด์ผ ํฉ๋๋ค. 1๋จ์ด ๋ช
๋ น ๊ตฌ์กฐ(?)๋ฅผ ์ ์งํฉ๋๋ค.
ํน์ ๋จ๊ณ์์ ์บ์๋ฅผ ๊นจ๋จ๋ฆฌ๊ธฐ ์ํด Dockerfile์ ํธ์งํด์ผ ํ๋ ๊ฒ(์๋ฆฌ ํ์์์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ ๊ฒ์ ์ถ๊ฐํ์ฌ)์ ์์ ํด์ผ ํฉ๋๋ค. ๋๋ ํญ์ ํน์ ๋จ๊ณ๋ฅผ ์คํํ๋ docker build
CLI ์ต์
์ ์ฌ์ฉํ ๊ฒ์ด์ง๋ง, ๋ช
๋ น์ ์ด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ํน์ ๋ผ์ธ ๋ฒํธ๋ฅผ ์ถ์ ํด์ผ ํ๋ ๊ฒ์ ๋ค๋ฃจ๊ธฐ ํ๋ค๋ค ๋ git clone
๋ฐ๋ก ์์ Dockerfile์ ์์์ ๋ฌธ์(!)๋ฅผ ์ถ๊ฐํ๋ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ์ํํ๊ณ ์ถ์ง ์์ต๋๋ค.
@curtiszimmerman ์์ด๋ก ๊ธด๋ฐํจ๊ณผ ์ ์ฌํ ๊ฒ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ (!) ์ ์ํ์ต๋๋ค. ("์ด๋ ๊ฒ ํด์ผ์ง!")
Dockerfile์ ์ด๋ค ๋ช ๋ น์ด ์บ์ ํด์ /์บ์ ๊ฐ๋ฅํด์ผ ํ๋์ง๋ฅผ ์ ์ํ๊ธฐ ์ํ ์ต์ํ ํ๋์ ์ ์ ํ ์ฅ์๋ผ๊ณ ์๊ฐํฉ๋๋ค. "--no-cache=git"์ผ๋ก ๋น๋ํด์ผ ํ๋ ๊ฒ(์ด๊ฒ์ด ๋น์ ์ด ์ ์ํ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋น์ ์ ๋ด๊ฐ ์ธ์ฉ/๋น๊ตํ ๊ฒ์ ์ ์ํ์ง ์์์ต๋๋ค)๊ฐ ๋ ํฌ๋ฐํด ๋ณด์ ๋๋ค.
์ RUN์ ์ด์ ์ ๋ง์ถ๋๊ฐ? ๋ชจ๋ ๋ช
๋ น์ ๋ํด ์บ์๊ฐ ๋ฒ์คํธ๋๋ ๊ฒ์ ํ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
๋ค์์ ์ถ๊ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ ์บ์
Dockerfile ๋ช
๋ น์ ์ ํ์ ํจ์ฌ ๋ ์ ์ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์ ์ฐ์ฑ์ ์ถ๊ฐํ๊ธฐ ์ํด ์ ํ์ ์ผ๋ก ํ๋๊ทธ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
๋ฒ์คํธ ์บ์ $doit
์ฌ๊ธฐ์ $doit์ด ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค. ๋น๋ ์ -e ์ต์
์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ฉด( https://github.com/docker/docker/pull/9176 ) ์ฌ๋๋ค์ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
๋์ปค ๋น๋ -e doit=true ...
@zamabe ์, ์์ ํ RUN!
์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์ฃ์กํฉ๋๋ค. ์ฌ๊ธฐ์ ๋๋ "์ด๊ฑด ์ด์ํด!"๋ผ๊ณ ๋งํ๊ธฐ ์ํด (!)๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ํน์ ๋จ๊ณ์์ ์บ์๋ฅผ ๊นจ๊ณ ์ถ์ ๋๋ง๋ค Dockerfile์ ํธ์งํ๋ ๋ฐฉ๋ฒ. ์ด์จ๋ ํน์ ๋จ๊ณ๊ฐ ์ ์ฉํ๊ธฐ ์ ์ Dockerfile ๋ด๋ถ์ ์บ์๋ฅผ ํ๊ดดํ ์ ์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ ์น๋ฆฌ๋ฅผ ์ํด ์บ์ ๋ฌดํจํ ๋ช
๋ น ์ดํ์ ๋จ๊ณ๊ฐ ์บ์์ ์๋ ๊ฒ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ์ธ ๊ฒฝ์ฐ ์บ์์์ ๊ณ์ํ ์ ์์ ๋งํผ ๋๋ํด์ผ ํฉ๋๋ค. ). BUST-CACHE
or ALWAYS RUN
(or RUN ALWAYS
) or RUN!
... ์ด ๊ธฐ๋ฅ์ ์ง์ํ๋ ์ด๋ค ๋ฉ์ปค๋์ฆ์ด๋ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
@duglin ์ฃ์กํฉ๋๋ค? ๋ฒ๊ทธ ์ ๋ชฉ์ RUN์ผ๋ก ํ์๋์ด ์์ด ์๋ฅผ ๋ค์ด ์ค๋ช ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
@curtiszimmerman ์.
์ฌ๋ด์ผ๋ก; ๋๋ ์บ์ ์ฌ๊ฒ์ฆ(?)์ด ์ด ๋ฒ๊ทธ๊ฐ ์ฐพ๊ณ ์๋ ์บ์ ๋ฌดํจํ๋ฅผ ์ฝ๊ฐ ๋์ด์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๋น์ ์ด ์ ์ํ ๊ฒ์ด ๋ง์์ ๋ค์ง๋ง, ์บ์ ๋ฌดํจํ ๋ช ๋ น์ ๊ฐ๋ฅํ ํ ๋์ ๋ฃ๊ธฐ ์ํด Dockerfile์ ์ฌ์ ๋ ฌํ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํ์ํ ๊ณ์ฐ/๋น๊ต๋ฅผ _ํญ์_ ์ํํ๊ธฐ ๋๋ฌธ์ _๊ฐ๋ฅํ_ ์บ์ ์ ์ค์์ ์ป์ ์ด์ ์ ๋ฌดํจํํฉ๋๋ค. ์ด๋ ์บ์ ๋ฒ์คํ ์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ด ์๋ง๋ ์บ์ ๋ฏธ์ค๋ฅผ ๊ธฐ๋/์์ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก Dockerfile ๋น๋๋ฅผ ์๋ฃํ๋ ๊ฒ๋ณด๋ค ๋ ๋ฌด๊ฑฐ์ด ํจ๋ํฐ์ผ ๊ฒ์ ๋๋ค.
@zamabe ๋์ํฉ๋๋ค. ๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํ๋ค๋ฉด ์บ์ ๋ฒ์คํ
์๋ณ์์ ๋ณ๊ฐ์ธ ์บ์์์ ๊ณ์ํ๋ ํน์ ๋ช
๋ น์ด ํ์ํ ์ ์์ต๋๋ค. ๋งค๋ฒ ์บ์๋ฅผ ๋นํ์ฑํํ๊ธฐ ์ํด ํน์ ์ง์ ์์ DISABLE-CACHE
์ ๊ฐ์ ๊ฒ, ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง Dockerfile์ด ์บ์์์ ๊ณ์ํ๋ ๊ฒ๋ณด๋ค ๋น์ฉ์ด ๋ง์ด ๋๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ DISABLE-CACHE?
์ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฅํ๋ฉด ์บ์์์ ๊ณ์ํ์ญ์์ค. ๊ทธ๊ฒ์ ์ ์์ด ์๋๋ผ ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ์ ๋ฌํ๊ธฐ ์ํ ์์ฐ์ผ ๋ฟ์
๋๋ค.
git repo์ ํ ์ฝ๋์ ๋ํด +1
+1
์ด๊ฒ์ ์์ฒญ๋ ๊ฒ์ ๋๋ค! ์ง๊ธ ๋น์ฅ์ git ํด๋ก ์ ๋ํ ์บ์๋ฅผ ๋๊ธฐ ์ํด git commit ํด์๋ฅผ Dockerfile์ ์ฐ๋(์๋ฆฌ ํ์์ ๋ฎ์ด์ฐ๊ธฐ) ์ง์์ ์ธ ํตํฉ์ ์ผ๋ถ๊ฐ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด https://github.com/docker/docker/pull/10682 PR์ ์ ์ถํ์ต๋๋ค.
์บ์ฑ์ ๋ค์ ์ผ๋ ๊ฒ์ ์ง์ํ์ง ์์ง๋ง ์ค๋๋ ์๋ ๊ฐ๋ฅํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
+1
Dockerfile์์ ์์์ ์ซ์๋ฅผ ์์ฑํ๊ณ ์๋๋ฐ ์บ์๋ฉ๋๋ค...
NOCACHERUN ๋ช
๋ น์ ๊ฒฝ์ฐ +1
+1
๋ชจ๋ ๊ฒ์ ๋ค์ ๋น๋ํ์ง ์๊ณ ๋งค๋ฒ ์ํํด์ผ ํ๋ ์ผ๋ถ RUN์ ์ ๋ง ์ ์ฉํด์ผ ํฉ๋๋ค.
git clone
๋ ์บ์์ ๋๋ฌํ์ง๋ง go get -d
๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ์ ์ด๋ค ์์ด๋์ด?
_ @LK4D4 @calavera @jfrazelle @crosbymichael @tiborvass_์
์ค์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ง์ง ์์ผ๋ฏ๋ก ๋ซ์ต๋๋ค(์์ธํ ๋ด์ฉ์ ๊ด๋ จ #10682 ์ฐธ์กฐ).
์คํ์ ๋ํด +1์ ๋๋ค. ์ข์ ๊ฒ.
+1
docker 1.9์๋ ๋น๋ ์๊ฐ ๋ณ์๊ฐ ๋์ ๋์์ต๋๋ค. ์บ์๋ฅผ ๊ฐ์ ๋ก ๊นจ๊ธฐ ์ํด ๊ทธ๊ฒ๋ค์ (์๋ชป) ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ https://github.com/docker/docker/issues/15182๋ฅผ ์ฐธ์กฐ
์ด๊ฒ์ด ์์ง ๊ธฐ๋ฅ์ด ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@hacksaw6 ์ฌ๊ธฐ์์ ๋งํ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค. https://github.com/docker/docker/pull/10682
+1
+1
+1 ์ด๊ฒ ์์ง ์๋ฌด๊ฒ๋ ์๋๋ฐ!!!!!
+1 ๊ฑด๋ฌผ์ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ ค๋ฉด ์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
+1
+1
+1
+1
+1 ๋งค์ฐ ์ ์ฉํฉ๋๋ค
(์ง๊ธ์ @timruffles ํด๊ฒฐ ๋ฐฉ๋ฒ ์ฌ์ฉ)
+1
+1
+1
์ฌ๋๋ค์ด ์ด๊ฒ์ด ๋จ์ง ํ์ํ ๊ธฐ๋ฅ์ธ ์ด์ ๋ฅผ ์ ์ ์๋๋ก ์ฌ๋๋ค์ด +1 ๋์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค.
+1, ์บ์๋ git ํด๋ก ์ ๋ํ ์๋ฃจ์ ์ ์ฐพ๊ธฐ ์ํด Google์ ํตํด ์ฌ๊ธฐ์ ๋์ฐฉํ์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก:
๋น๋ํ๋ ๋์ gradle์ ํตํด ํ
์คํธ ์คํ ๋ชจ๋์์ groovy ๋ง์ดํฌ๋ก ์๋น์ค ์ฑ์ ํธ์ถํ๋ ๋์ปค ๊ตฌ์ฑ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ์ข
์ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์๊ฒฉ mvn ์ ์ฅ์์์)๊ฐ ๋ก์ปฌ docker mvn ์ ์ฅ์๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค. ํ
์คํธ ์คํ์ ์ฑ์ ์คํํ๊ณ ์ฆ์ ๋ฐํ๋์ง๋ง ๋ชจ๋ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข
์์ฑ์ด ๋ก๋๋๋๋ก ํฉ๋๋ค.
๋์ปค ์คํ ๋จ๊ณ์์ ๋์ผํ ์ฑ์ด gradle --offline ๋ชจ๋๋ฅผ ํตํด ์คํ๋ฉ๋๋ค. ์ฆ, ๋ง์ดํฌ๋ก ์๋น์ค ์ฑ์ ๋ก์ปฌ mvn ์ ์ฅ์ ๋๋ ํ ๋ฆฌ์์ ๋ก๋๋ฉ๋๋ค. ๋น์ธ๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์๊ฒฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ค๋
์ท ๋ฒ์ ์ ๋ฆด๋ฆฌ์คํ ๋ docker ๋๋ ํ ๋ฆฌ๋ฅผ ์์ ํ์ง ์๋ ํ docker๋ ๋น๋ ์ค์ ์๊ฒฉ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค(์ฆ, ๊ทธ๋ ๋ด gradle dryrun cmd๋ฅผ ํธ์ถํ์ง ์์).
๋ด ์ฌ์ฉ ์ฌ๋ก: ์ด๋ฏธ์ง์ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์ ํ์ฌ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ํด ๋์ปค ํ๋ธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ AFAIK๋ ์๋ฌด ๊ฒ๋ ์บ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ธ์ ๋ฐ๋์ง ๋๊ฐ ์๊ฒ ์ต๋๊น.
docker์ NOCACHE์ ๊ฐ์ ๋ช
๋ น ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ์ด๋ฏธ์ง๊ฐ ๋น๋๋๋ ์์น์ ๊ด๊ณ์์ด ๋ณด์ฅ๋ฉ๋๋ค.
์ต์ ๋ฒ์ ์ธ IMHO๋ณด๋ค ๋น๋ ์์คํ "๊ธฐ๋ฅ"์ ์์กดํ๋ ๊ฒ์ด ๋ ๋์ฉ๋๋ค.
์ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น: FORCE RUN git clone ....
?
์ง๊ธ์ RUN _=$(date) git clone ...
๋ฅผ ์ฌ์ฉํ์ฌ ์บ์๋ฅผ ๋ฌดํจํํ๊ณ ์์ต๋๋ค.
@c9s ์ค์ ๋ก ์๋ํฉ๋๊น? ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์๋๋ค.
@duglin ์ค์ ํ๊ฒฝ ๋ณ์๊ฐ ์ ์๊ฒ ํจ๊ณผ์ ์ ๋๋ค. "FORCE RUN"์ ์ ์์ผ ๋ฟ์ ๋๋ค.]
@c9s Dockerfile ์ฒ๋ฆฌ๊ฐ ์๋ ์ปจํ
์ด๋์ ์
ธ์์ ์ํ๋๊ธฐ ๋๋ฌธ์ env var ์ค์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ์ ์์ต๋๋ค. RUN _=$(date) echo hi
์๋ํ๋ฉด ๋ ๋ฒ์งธ ๋น๋์์ ์บ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@duglin ๋น์ ๋ง์ด ๋ง์์ :| ์บ์๋ฅผ ๋ฌดํจํํ์ง ์์ต๋๋ค
@ c9 ๋์
FROM foo
ARG CACHE_DATE=2016-01-01
RUN git clone ...
docker build --build-arg CACHE_DATE=$(date) ....
@thaJeztah ๊ฐ์ฌํฉ๋๋ค! ํจ๊ณผ๊ฐ์๋ค!
+1 git repos ๋ณต์ (์ฌ์ฉ ์ฌ๋ก)
๋๋ฌด ๋ง์ +1, ๋์ปค ํ์ผ์์ git repo๋ฅผ ๊ฐ์ ธ์ค๋ฉด ์บ์๊ฐ ์ด๋ฏธ์ง๊ฐ ๋น๋๋์ง ์๋๋ก ํฉ๋๋ค. CI๋ฅผ ํตํด ๋น๋๋ฅผ ํธ์ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
+1 git repos ๋ณต์ (git repo์์ ์ฝ๊ฐ์ ํธ์ง์ด ์ด๋ฃจ์ด์ง ๋๋ง๋ค ์ด๋ฏธ์ง๋ฅผ ์ฒ์๋ถํฐ ์๋ก ๋น๋ํด์ผ ํ๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์ ๋๋ค)
@Vingtoft ๋ฆฌํฌ์งํ ๋ฆฌ ์ ํ์ผ์ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ ์บ์๊ฐ ๋ฌดํจํ๋ฉ๋๋ค.
@itsprdp ๊ทธ๊ฑด ๋ชฐ๋๋๋ฐ ๋ช ํํ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@itsprdp ๋ฐฉ๊ธ ํ
์คํธํ์ต๋๋ค. ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธํ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ Docker๋ ์ฌ์ ํ ์บ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ์คํดํ๊ณ ์๋ ๊ฑด ์๋๊น?
@itsprdp ๋ด ๊ฒฝํ์ ์ ํํ์ง ์์ต๋๋ค. ๋๋ ํ ์คํธํ๊ธฐ ์ํด repo์ ์๋ก์ด ์ปค๋ฐ์ํ๊ณ ๋ค์ ๋น๋ ํ ๋ ๋์ผํ ์บ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ์ด์ ์ ๋์ปค ํ์ผ์ ๋ณ๊ฒฝํ๋ฉด ๋ฌผ๋ก ์บ์ ๋ฒ์คํธ๊ฐ ๋ฐ์ํ์ง๋ง ๋จ์ํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํด๋ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@RyanHartje ํผ๋์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ์ฅ์๊ฐ ์
๋ฐ์ดํธ๋๋ฉด ์บ์๋ฅผ ๋ฌดํจํํด์ผ ํ๋ฉฐ ์ด๋ ๊ธฐ์ฌ์๊ฐ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์
๋๋ค.
@Vingtoft๊ฐ ์์ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์ ์ฅ์๋ฅผ ์บ์ํ๊ณ ์ ์ฅ์์์ ๋ณ๊ฒฝ๋ ํ์ผ๋ง ์
๋ฐ์ดํธํ๋ ๊ฒ์
๋๋ค. ๊ตฌํํ๊ธฐ๊ฐ ๋ณต์กํ ์ ์์ต๋๋ค.
@itsprdp ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์
๋ฐ์ดํธํ๋ ๊ฒ๋ง์ผ๋ก ๊ต์ฅํ์ง๋ง ๋ ์ ์(๋๋ ๋ ๋ง์ด ๋งํด์ผ ํ ๊น์?) ๋ํ ํ ์ ์์ต๋๋ค.
๋ด ์ ์ค ์ผ์ด์ค(๋ฐ ๋ง์ ๋ค๋ฅธ ์ฌ๋๋ค)์์ ์ค์ git pull์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค. ๊ฐ๋ฐ ํ๋ฆ์ ์ฃฝ์ด๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๊ตฌ์ถํ๋ ๊ฒ์
๋๋ค.
+1, git clone ์ค ์บ์ ์ฌ์ฉ :(
ํตํฉ ์๋ฃจ์ ์ด ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง ๊ทธ ๋์ ARG ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ Dockerfile ๋ช ๋ น์์ ์บ์๋ฅผ ํ๊ดดํ ์ ์์ต๋๋ค.
Dockerfile์์:
ARG CACHEBUST=1
RUN git clone https://github.com/octocat/Hello-World.git
๋ช ๋ น์ค์์:
docker build -t your-image --build-arg CACHEBUST=$(date +%s) .
CACHEBUST
๋ฅผ ํ์ฌ ์๊ฐ์ผ๋ก ์ค์ ํ๋ฉด ํญ์ ๊ณ ์ ํ๋ฉฐ Dockerfile์์ ARG ์ ์ธ ์ดํ์ ๋ช
๋ น์ ์บ์๋์ง ์์ต๋๋ค. CACHEBUST
build-arg๋ฅผ ์ง์ ํ์ง ์๊ณ ๋น๋ํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ๋ณธ๊ฐ 1์ ์ฌ์ฉํ๊ณ ์บ์๋ฅผ ๋ณด์กดํฉ๋๋ค. ์ด๊ฒ์ ํญ์ git repos์ ์๋ก์ด ๋ณต์ฌ๋ณธ์ ํ์ธํ๊ณ ์ต์ SNAPSHOT ์ข
์์ฑ์ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํธ์ง: ์ด, @thaJeztah๊ฐ ๋งํ ๊ฒ์ ๋๋ค. ๋๋ ์ด๊ฒ์ ๊ทธ์ ์๋ฃจ์ ์ ๋ํ ์ถ๊ฐ ์ค๋ช ์ผ๋ก ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค.
@shane-axiom CACHEBUST
๊ฐ์ผ๋ก git commit hash๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
export CACHEBUST=`git ls-remote https://[email protected]/username/myRepo.git | grep refs/heads/develop | cut -f 1` && \
echo $CACHEBUST && \
docker build -t myDockerUser/myDockerImage \
--build-arg blah=blue \
--build-arg CACHEBUST=$CACHEBUST \
.
http://stackoverflow.com/questions/15677439/how-to-get-latest-git-commit-hash-command#answer -15679887์ ๋จ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
@pulkitsinghal git repos์ ๋ํ ์บ์๋ฅผ ํ๊ดดํ๋ ๋ฐ ๋ฉ์ง๊ฒ ๋ณด์ ๋๋ค. ๋ค๋ฅธ ์ฉ๋(์: SNAPSHOT ์ข ์์ฑ ๊ฐ์ ธ์ค๊ธฐ ๋ฑ)์ ๊ฒฝ์ฐ ํญ์ ๋ฒ์คํ ํ์์คํฌํ ์ ๊ทผ ๋ฐฉ์์ด ์ ์๋ํฉ๋๋ค.
์บ์ ON์ ๋ํด +1 | ๋๋ค
+1
+1
@CheRuisiBesares ์ ๊ทผ ๋ฐฉ์ ์ ๋ํด ๊ธฐ์ตํ์ญ์์ค. ์บ์ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ํญ์ ADD https://www.random.org/strings/?num=16&len=16&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new uuid
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ถ๊ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฒ์ํ๋ ค๋ฉด ....
COPY package.json /usr/src/
RUN npm install
package.json
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ถ ๋น๊ณต๊ฐ github ์ข
์์ฑ์ ๋ํด master
ํ๊ทธ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ package.json
ํ์ผ์ ๋ณ๊ฒฝํ์ง ์๋ ํ ์ค์ ๋ก ์ต์ master
์ป์ง ๋ชปํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค(์ผ๋ฐ์ ์ผ๋ก ์ค๋ช
์ -
๋ฅผ ์ค๋ช
์ ์ถ๊ฐํ ๋ค์ ํ
์คํธํ๋ ๋์ ์ ๊ฑฐ).
A๋ RUN NO CACHE
๋์ ์ทจํ RUN
๊ทธ๊ฒ์ด ์ข์ ์๋ฃจ์
์ด ๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
+1
์บ์๋ฅผ ์ฌ์ฉํ๊ณ npm์์ ๋ด ์ ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ npm ์ค์น์ ๋ํด ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋์ปค ํ์ผ์์ RUN ๋ช ๋ น๋น ์บ์๋ฅผ ๋นํ์ฑํํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@brycereynolds @mmobini ์บ์๋ฅผ ์๋์ผ๋ก https://github.com/docker/docker/issues/1996#issuecomment -172606763์ ์ฐธ์กฐ
์บ์๋ฅผ ๋ฌดํจํํ ์ ์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. Docker์์ Dropwizard ์ ํ๋ฆฌ์ผ์ด์ (Maven์ผ๋ก ๋น๋๋ Java REST Services)์ ์คํ ์ค์ด๊ณ ์๋ํ๋ ์์คํ ์ด ๋ชจ๋ ์ปจํ ์ด๋ ๋น๋ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. ๋ด ์ ์ฅ์์ Dockerfile์ ํฌํจํ๊ณ ๋๋จธ์ง๋ ์ํํฉ๋๋ค. ์์คํ ์ ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ๋ฒ์ ๊ณผ ํ๋ ์ด์์ ๊ฐ๋ฐ ๋ฒ์ ์ ์คํํฉ๋๋ค. ๊ฐ๋ฐ ๋น๋๋ ๋ฌธ์ ๊ฐ ์๋ ๊ณณ์ ๋๋ค.
๊ฐ๋ฐ ์ค์ ์ผ๋ถ ํ๋ก์ ํธ ์ข ์์ฑ์ ๋ฒ์ ๋ฒํธ์๋ SNAPSHOT์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฒ์ ์ด ๊ฐ๋ฐ ์ค์ด๋ฉฐ ๋ชจ๋ ๋น๋์ ํจ๊ป ์ ๋ฒ์ ์ ๋ด๋ ค์ผ ํจ์ Maven์ ์ง์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ผํ ํ์ผ ๊ตฌ์กฐ๋ก ์ธํด ๋ ๊ฐ์ ๋ณ๊ฐ ๋น๋๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค. ๋ฒ๊ทธ๊ฐ SNAPSHOT ์ข ์์ฑ์์ ์์ ๋์์ ์ ์์ผ๋ฏ๋ก ์ด๋ ๋ฐ๋์งํ ๋์์ ๋๋ค. ์ด๋ฅผ ์ง์ํ๋ ค๋ฉด ํ์ผ ์์คํ ์ ํ์ฌ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ช ๋ น์ ํจ๊ณผ๋ฅผ ๊ฒฐ์ ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ Docker๊ฐ ํน์ ๋ช ๋ น์ ์คํํ๋๋ก ํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค. Maven ์คํ์ผ์ SNAPSHOT ์ข ์์ฑ์ด ์ฌ๋ฌ ๋ค๋ฅธ ๋น๋ ์์คํ ์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ Java ํ๋ก์ ํธ๊ฐ ์ด์ ์คํ๋ฉ๋๋ค.
@ctrimble --no-cache
๋๋ --build-arg
๋ฅผ ์ฌ์ฉํ์ฌ ์บ์๋ฅผ ๋ฌดํจํํ ์ ์์ต๋๋ค.
์บ์ ๊ฐ๋ฅํ ๋ชจ๋ ๋ช
๋ น์ด ํฌํจ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ --no-cache
์ ์ํฅ์ ์ต์ํํ ์ ์์ต๋๋ค.
@cpuguy83 ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ ๋๋ฅผ ์ฝ๊ณ ํ์ฌ ์ต์ ์ ์ดํดํฉ๋๋ค. ์บ์ ๋ฌดํจํ ์ธ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ ์ค์ธ ๋น๋ ์์คํ ์ผ๋ก ํฐ์ผ์ ์ด์์ต๋๋ค. ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ๋ ๊ฐ์ ๊ฐ๋ณ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋น๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ ๋ง์ ๊ณผ์ ์ฒ๋ผ ๋ณด์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ๋ ๊ฒ์ด ํจ์ฌ ์ฌ์ธ ๊ฒ์ ๋๋ค.
์ด ํจํด์ ๊ฐ๋ฐ ๋น๋์์ ์์ฃผ ๋ํ๋ฉ๋๋ค. Dockerfile์ ์๋ฏธ ์ฒด๊ณ๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@ctrimble ํ ๋จ๊ณ์์ ์บ์๋ฅผ ๋ฒ์คํธ ๋ฉ๋๋ค.
@cpuguy83 ์ ํํ. ๋ด ๋น๋ ์์คํ ์ ์๋ฏธ๋ ๊ฐ๋ฐ ๋น๋์ ๋ํด ์ผ์์ ์ ๋๋ค. ์บ์ฑ๋ณด๋ค ์ฌ๋ฐ๋ฅธ ๋น๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ์ ๋ง ๋ ๋ค ๋ฐ๊ณ ์ถ์ต๋๋ค.
์ฌ๊ธฐ์ ์๋นํ ํ ๋ก ์ด ์์ต๋๋ค. ์ด๋ฏธ ์ ์๋ ๊ฒฝ์ฐ ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
CHECK [FILE_PATH]
๋ชจ๋ ๋์ปค๋ ํ์ผ์ MD5(๋๋ ๋ค๋ฅธ ํด์๊ฐ ํํ ๋ชจ๋ ๊ฒ)๋ฅผ ์ ์ฅํ๊ณ ํ์ผ์ด ๋ณ๊ฒฝ๋๋ฉด ์ดํ์ ๋ชจ๋ ๋จ๊ณ๊ฐ ๋ฌดํจํ๋ฉ๋๋ค.
๋๋ ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ด ํ ๊ฒ์ ๋๋ค.
CHECK Gemfile
CHECK package.json
CHECK composter.json
CHECK project.json
์ผ์ ๊ธฐ๊ฐ์ด ์ง๋ ํ ์๊ฐ์ด ์ผ๋ง๋ ํ๋ ๋์ง ํ์ธํ ์๋ ์์ต๋๋ค. apt
ํ๋ฌ๊ทธ์ธ์ ๋ํ Ansible์ cache_valid_time
๋งค๊ฐ๋ณ์๋ ์๊ฐ์ ์ค ์ ์์ต๋๋ค. http://docs.ansible.com/ansible/apt_module.html
์ด๋ฅผ ์ํด ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
EXPIRE 1234567
RUN apt-get update
RUN bundle install
Docker๋ ๋ง์ง๋ง ์คํ ์๊ฐ์ ์๊ณ "์ง๊ธ"์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ด ๊ฒฝ๊ณผํ๋์ง ๊ณ์ฐํฉ๋๋ค.
@atrauzzi 1.13์ ๋น๋์์ --squash
๋ฅผ ์ง์ํฉ๋๋ค(์ง๊ธ์ ์คํ์ฉ).
@cpuguy83 ๋ด๊ฐ ์ฝ์ ์ ์๋ --squash
์ ๋ํ ๋ฌธ์๋ ์ค๋ช
์ด ์์ต๋๊น? ์ฒ์์๋ ์ด๋ฆ์ด ๋ด ์๊ฐ๊ณผ ์ผ์นํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ํ๋ฆด ์ ์์ต๋๋ค.
@atrauzzi ์, ๋น๋ ์ฐธ์กฐ์์.
๊ธฐ๋ณธ์ ์ผ๋ก --squash
๋ ๋ค ๊ณ์ธต ์บ์๋ฅผ ๋ณด์กดํ๊ณ Dockerfile์ ๋ชจ๋ ๊ฒ์ด ๋จ์ผ ๊ณ์ธต์์ ๋ฐ์ํ ๊ฒ์ฒ๋ผ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
ํ์ผ ์บ์๊ฐ ์ฌ์ ํ ๊ฐ๋ณ์ ์ผ๋ก ์ ํจํ์ง ํ์ธํด์ผ ํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ADD
๋ฐ COPY
๋ ๋ณต์ฌ๋๋ ๋ชจ๋ ํญ๋ชฉ์ ๋ํด ์ด๋ฏธ ์ด ์์
์ ์ํํฉ๋๋ค.
@cpuguy83 ์ข์ ์ , ์๊ฐ๋ ๋ชปํ๋๋ฐ, ๋ฌผ๋ก ์ด๋ฏธ ์ฌ์ฉ ์ค์ ๋๋ค.
ํ์์คํฌํ/๊ธฐ๊ฐ ์ ๊ทผ ๋ฐฉ์์ ์ด๋ป์ต๋๊น? ์ด๋ฏธ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ๋ฅํ๊ฐ์?
ํ์์คํฌํ/๊ธฐ๊ฐ ์ ๊ทผ ๋ฐฉ์์ ์ด๋ป์ต๋๊น? ์ด๋ฏธ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ๋ฅํ๊ฐ์?
๋น๋ ์ธ์๋ฅผ ํตํด;
ARG expire_after=never
RUN do some thing
docker build --build-arg expire_after=2016-12-01 -t foo .
์บ์๋ฅผ ํ๊ดดํ๋๋ก ๋น๋ ์ธ์๋ฅผ ๋ณ๊ฒฝํ์ญ์์ค.
๋ ๊นจ๋ํ ๋ฐฉ๋ฒ์ ์ํด +1
๋ ๊นจ๋ํ ๋ฐฉ๋ฒ์ ์ํด +1
์บ์ ์ฝ๊ธฐ๋ฅผ ๋นํ์ฑํํ๊ณ ์บ์์ ์ฐ๊ธฐ๋ฅผ ๋นํ์ฑํํ๋ ๋ณ๋์ ์ต์ ๋ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฏธ์ง๋ฅผ ์ฒ์๋ถํฐ ์๋ก ๋ง๋ค๊ณ ์บ์๋ ๋ ์ด์ด๋ฅผ ๋ชจ๋ ๋ฌด์ํ๋ฉด์ ๊ฒฐ๊ณผ ์ ๋ ์ด์ด๋ฅผ ์บ์์ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
+1
๋น๋ ๋ช ๋ น์ ๋จ๊ณ ๋ฒํธ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ๊ฐ์:
docker build --step 5 .
๋น๋ ์ค 5๋จ๊ณ๋ฅผ ํฌํจํ์ฌ ์ดํ์ ๋ชจ๋ ์บ์๋ฅผ ๋ฌด์ํฉ๋๋ค.
+1
์ ๋ฐ.
์บ์ ์ผ๊ธฐ|๋๊ธฐ +1
์ด๋ฌํ CACHE ON|OFF
๋ช
๋ น์ ๋ฌธ์ ๋ ์บ์๊ฐ ๊บผ์ง ๋จ๊ณ์์ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ์บ์ํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ์ ์ผํ๊ฒ ํฉ๋ฆฌ์ ์ธ ๋ช
๋ น์ ENDCACHE
์
๋๋ค.
๊ทธ๊ฒ์ ์ ํจํ ์๊ฐ/์ ์ ์ ๋๋ค. ์ด ๋ช ๋ น์ ์บ์๊ฐ ๋ค์ ์ผ์ง ๋ ์บ์๋์ง ์์ ๋ชจ๋ ๋ ์ด์ด๋ฅผ ๋จ์ผ ๋ ์ด์ด๋ก ํตํฉํด์ผ ํฉ๋๋ค. ๋ฌผ๋ก ๋น์ ์ ์ฌ์ ํ โโ์ต๊ณ ์ ๋ช ๋ช /์๋ฏธ๋ก ์ ์ ํ์ฑ/๊ธฐ๋ฅ์ ์ ํธํ๋ ๊ตฌ๋ฌธ์ ๋ํด ๋ ผ์ํ ์ ์์ต๋๋ค.
+1
+1 ํ์ ๊ธฐ๋ฅ
CACHE ON|OFF +1 ๋์
+1 ๋๋์ต๋๋ค.
Docker๊ฐ ์ด์ ์ ๋จ๊ณ๋ฅผ ์บ์ํ๋ ๋ฐฉ์์ ์ค์ ๋ก ์ดํดํ์ง ๋ชปํ๊ณ ๋ด ์์คํ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋น๋๋์ง ์๋ ์ด์ ๋ฅผ ์กฐ์ฌํ๋ ๋ฐ ๋ฐ๋์ ์ ๋ณด๋์ต๋๋ค. "git clone" ์บ์ฑ์ด์์ต๋๋ค.
ALWAYS
ํค์๋๋ฅผ ๊ฐ๊ณ ์ถ์ต๋๋ค.
์ด๋ป๊ฒ ๋ซํ?
๊ฐ์ฅ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
https://github.com/moby/moby/issues/1996#issuecomment -185872769 ์๋ํ๋๋ฐ ์๋ํ์ต๋๋ค.
Dockerfile์์:
ARG CACHEBUST=1
RUN git clone https://github.com/octocat/Hello-World.git
๋ช ๋ น์ค์์:
docker build -t your-image --build-arg CACHEBUST=$(date +%s)
RUN๊ณผ ์ ์ฌํ ์ ๋ช ๋ น์ ์์ฑํ์ง ์์ง๋ง RUN NO CACHE์ ๋ํด RUNNC๋ฅผ ์บ์ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@habeebr (https://github.com/moby/moby/issues/1996#issuecomment-295683518) - https://github.com/moby/moby/issues/1996# ๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
+1
RUNNC๋ ์ข์ ์์ด๋์ด์ ๋๋ค!
์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ณธ์ง์ ์ผ๋ก ๋์ผํ ๊ฒ์ ์๊ตฌํ๋ ๋ฌด์ํ ์ค๋ณต๊ณผ ์ด๋ฌํ ์ค๋ณต ์ค ํ๋ ์ด์์ ๊ธด ๋๊ธ ๊ธฐ๋ก ์ฌ์ด์์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋ณด๋ ๋ฐ ๊ฑด์ ํ ๊ด์ฌ์ด ์๋ค๋ ๊ฒ์ _๋ถ๋ช ํ ๊ฒ ๊ฐ์ต๋๋ค_.
๋๋ ๊ทธ๊ฒ์ด ์ด๋ ต๊ณ ์๋ง๋ ์๋ฌด๋ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ณ ๋งค๋ ฅ์ ์ธ Docker ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ถฉ๋ถํ ๊นจ๋ํ ์ถฉ๋ถํ ์ฐ์ํ ์๋ฃจ์ ์ ์ ์ํ์ง ์์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด _ํ์ํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
์ด๊ฒ์ ๋๋ด๋ ๊ฒ์ ์ฐฌ์ฑํ์ฌ ๋ด๊ฐ ๋ค์ ์ ์ผํ ๋ค๋ฅธ ์ฃผ์ฅ์ ์ด๊ฒ์ ๋ฌ์ฑํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค...๊ทธ๋ฌ๋ ๊ทธ ์ฃผ์ฅ๋ ์์ง์ ํต๊ณผํ์ง ๋ชปํฉ๋๋ค. ์บ์ ์ ์ด ๋ถ์กฑ์ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์ผํ ๋ชฉ์ ์ผ๋ก ์ฌ๋ฌ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ค๋ฃจ๊ธฐ ํ๋ค๊ณ ARG๋ฅผ ํตํด ๋ฌดํจํ๋ฅผ ์๋ํ๋ ๊ฒ์ ๋ํ๊ณ ์ง๊ด์ ์ด์ง ์์ต๋๋ค. Docker ๊ฐ๋ฐ์๊ฐ ๊ณต์์ ์ผ๋ก ๋๊ตฌ์ ์กฐ์กํ ํดํน์ ํตํฉํ๋ ค๋ ๋งํผ ์ฌ์ฉ์๊ฐ ์ด๋ฌํ "ํด๊ฒฐ ๋ฐฉ๋ฒ"์ ํ์ฉํ๊ธฐ๋ฅผ ์ํ๋ค๊ณ ์์ํฉ๋๋ค.
์ด๋ ต์ง ์์ต๋๋ค: https://github.com/moby/moby/pull/10682
์ฌ์ด ์๋ฃจ์
, ์ฌ์ด UX. ์ํํด์ผ ํ๋์ง ์ฌ๋ถ์ ๋ํ ๋ช
ํํ ํฉ์๊ฐ ์์ต๋๋ค.
์์ฐ ๊ทธ๋ฅ ์์ฐ...
๋๋ ๊ทธ๊ฒ์ ๋ํด ๋ฃ์ง ์๊ธฐ ์ํด ์ด๋ฏธ ๊ทธ๊ฒ์ ๊ตฌํํ์ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์ ๊ธฐ๋ฐ์ด ๊ทธ๊ฒ์ ์ํ๋ค๋ ๋ถ๋ช ํ ํฉ์๊ฐ ์๋ค๋ ๊ฒ์ ์ ๊ฒฝ ์ฐ์ง ๋ง์ญ์์ค. ์ ๋ ๊ทธ๋ฐ ํฐ ์คํ ์์ค ํ๋ก์ ํธ์ ๊ฐ๋ฐ์ ์ธก์ด ์๋๋ผ ํจ์ฌ ๋ ์์ ํ๋ก์ ํธ์๊ธฐ ๋๋ฌธ์ ์๋ง๋ ์ ๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
+1
ํฉ๋ฆฌ์ ์ธ ๋ณด์๊ณผ ๋ ๋์ ์ฑ๋ฅ์ ์ํด +1
+1
+1
+1
+1
+1
+1
+1 ์คํธ์ ๊ทธ๋ง ๋ ์ ์์ต๋๊น? ๋ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํฌํํ์ธ์.
๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๊น?
์ด ๋ฌธ์ ๊ฐ ๋ซํ ์ด์ ๋ฅผ ์์ง ๋ชจ๋ฆ
๋๋ค.
์ ์๊ฐ์๋ ์๊ฒฉ git ์ ์ฅ์์์ ๋ฒ์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์๋ฒฝํ๊ฒ ์ฒ๋ฆฌํ๋ ํ์ ๊ธฐ๋ฅ์
๋๋ค.
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
์ ์ด๊ฒ์ ๋ซ์ต๋๊น? ์ ์ฉํ ๊ฒ ๊ฐ์์
+1
+1
+1
ํ์ฌ ๋ ์ด์ด(๋ฐ ๋ค์)์ ๋ํ ์บ์๋ฅผ ๋นํ์ฑํํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ:
๋์ปคํ์ผ
ARG CACHE_DATE
RUN wget https://raw.githubusercontent.com/want/lastest-file/master/install.sh -O - | bash
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ --build-arg
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
docker build --build-arg CACHE_DATE="$(date)"
๊ทธ๋ฌ๋ฉด ์บ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋๋ง๋ค wget
๋ช
๋ น์ด ์คํ๋ฉ๋๋ค.
RUNNC
๋๋ CACHE OFF
๊ฐ ์ข์ ๊ฒ์
๋๋ค.
๊ทธ ๋์ ์ด๊ฒ์ ์ ๋งํด ๋ณด์
๋๋ค.
http://dev.im-bot.com/docker-select-caching/
๊ทธ๊ฑด:
๋๋ ์นจ์ฐฉํ๊ฒ ๊ฐ์ ๋ฌด๋ฆฌ์ ํฉ๋ฅํ ๊ฒ์ด๋ค.
+1
์, ๋ช
๋ น์ ์ ํ์ ์บ์ฑ์ด ํ์ํฉ๋๋ค. ๊ตฌ์ฑ ํ์ผ์์ ํ ๋จ์ด๋ง ๋ณ๊ฒฝํ๋ฉด ๋ด COPY
๊ฐ 80% ์คํจํฉ๋๋ค. ๋ด COPY
์บ์ํ์ง ์๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์บ์ํ๊ณ ์ถ์ต๋๋ค. CACHE ON
๋ฐ CACHE OFF
๊ฐ ์์ผ๋ฉด ์ข์ต๋๋ค.
RUN X
RUN X
CACHE OFF
COPY /config /etc/myapp/config
CACHE ON
@shadycuz ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก๋ ์บ์๋ฅผ ๋นํ์ฑํ/๋ฌดํจํํ ํ์๋ ์บ์๋ฅผ "๋ค์ ํ์ฑํ"ํ ์ ์์ต๋๋ค. ๋น๋๋ ์บ์๋์ง ์์ ๋ ์ด์ด๊ฐ ์๋ก์ด ๋ ์ด์ด์์ ๊ณ ๋ คํด์ผ ํ ํ์ผ ์์คํ
์ ๋ค๋ฅธ ๊ฒ์ ๋ณ๊ฒฝํ์ง ์์๋์ง (ํฉ๋ฆฌ์ ์ธ ์์ ๋ฆฌ์์ค๋ก ํฉ๋ฆฌ์ ์ธ ์๊ฐ ๋ด์) ํ์ธํ ์ ์์ต๋๋ค. ํญ์ ์ธ๋ถ ๊ตฌ์ฑ ํ์ผ์ ๊ฐ์ ธ์์ผ ํ๋ ์ํฅ์ ์ต์ํํ๋ ค๋ฉด COPY
์ง์๋ฌธ์ Dockerfile์์ ์ต๋ํ ์๋์ ๋์์ผ ํฉ๋๋ค(Docker๊ฐ ๋น๋ ์บ์๋ฅผ ์ต๋ํ ๋ง์ด ์ฌ์ฉํ ์ ์๋๋ก ์บ์๊ฐ ๋ฌดํจํ๋๊ธฐ ์ ์ ๊ฐ๋ฅํ ํ ๋น๋ ํ๋ก์ธ์ค).
๋น๋ ํ๋ก์ธ์ค์ ํน์ ์ง์ ์์ ์บ์๋ฅผ ๋ฌดํจํํ๋ ค๋ฉด ์์์ ์ธ๊ธํ --build-arg
๋ฐ ARG
์ฌ์ฉ์ ๋ํ ๋ค๋ฅธ ์๊ฒฌ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
@shadycuz @curtiszimmerman ์, CACHE OFF
๋ง ๋ณด์กดํ ์ ์์ง๋ง CACHE ON
๋ณด์กดํ์ง ์์ ์ ์์ต๋๋ค. ์ด์ ๋ ์ด์ด๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ค์ ๋ ์ด์ด๋ฅผ ๋ค์ ๋น๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๋๋ CACHE ON
์ด ๊ธฐ์ ์ ์ธ ๊ด์ ์์ ์๋ฏธ๊ฐ ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ์ด๋ค ๋ ์ด์ด๊ฐ ๋ฌดํจํ๋์ด์ผ ํ๋์ง ์๋๋ฅผ ๋ณด๋ค ๋ช
ํํ๊ฒ ํํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ข ๋ ์ ์ฐํ ์๋ฃจ์
์ RUN
์ ์ ์ฌํ ๋ช
๋ น์ผ๋ก ์ผ๋ถ ์
ธ ์ฝ๋์์ ์บ์๋ฅผ ๋ฌดํจํํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ข
๋ฃ ์ฝ๋ 0์ "์บ์ ์ฌ์ฉ"์ ์๋ฏธํ๊ณ 1์ "์บ์ ๋ฌดํจํ"๋ฅผ ์๋ฏธํ ์ ์์ต๋๋ค. ์ ์ฝ๋๊ฐ ์ ๊ณต๋์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ฌ๊ธฐ์๋ถํฐ ์บ์๋ฅผ ๋ฌดํจํํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ช
๋ น์ INVALIDATE๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ ๋๊ธ๋ ์์ด ๋ซํ์ง?
๋๊ธ์ด ์์์ง๋ง github์ ์จ๊ฒจ์ ธ ์์ต๋๋ค.
https://github.com/moby/moby/issues/1996#issuecomment -93592837
+1
์ด ๊ธฐ๋ฅ์ ์ง๊ธ ์ ์๊ฒ ์๋ช ์ ์์ธ์ด ๋ ๊ฒ์ ๋๋ค.
+1
์ค์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ง์ง ์์ผ๋ฏ๋ก ์ด๊ฒ์ ๋ซ์ต๋๋ค.
212๊ฐ์ ๋๊ธ๊ณผ ๊ณ์ฐ์ด ์์ง๋ง ์์ง ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๊น? ๊ฝค ๋ฌด์งํ ๊ฒ ๊ฐ์ต๋๋ค.
+1
+1
+1
+1
+1
๋ฌธ์ ๋ ์ฌ์ ํ ์ฌ๊ธฐ์ ์์ผ๋ฉฐ ์ฌ์ ํ ์๋ฃจ์ ์ด ํ์ํฉ๋๋ค. ์์ง ์ค์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ด ์์ต๋๋ค.
+1
Docker ๊ฐ๋ฐ์๋ ์บ์ ์์ ์์ฒญ์ผ๋ก ์ธํด ์ค์ ์ง์ค์ ๊ฑด๋ฌผ ์ธํ๋ผ๊ฐ DDsS๋์ง ์๋๋ก ๋ณดํธํ๊ธฐ ์ํด ์ด๊ฒ์ ๊ตฌํํ ์ธ์ผํฐ๋ธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ํ ์บ์ ์๋ ๋น๋๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ ๋ณ๋ ฌ ์ธํ๋ผ๊ฐ ์ํฐํ๋ผ์ด์ฆ ์ฌ์ฉ์์๊ฒ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ ์ํํธ์จ์ด ๊ธฐ๋ฅ์ ๊ดํ ๊ฒ์ด ์๋๋ผ ์๋น์ค ํ์ฅ ๋ฌธ์ ์ ๋๋ค.
@jaromil ์์ฒด ํธ์คํ ๋ฆฌํฌ์งํ ๋ฆฌ์์๋ ๊ฐ๋ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ํ ์ฌ์ค์ด ์๋๋๋ค.
์์ฒด ํธ์คํ
๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํ ์ํํธ์จ์ด๋ ๋ฌด์์
๋๊น? ๋๋ ๋น์ ์ด ๋ฌด์์ ์ธ๊ธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ฐ๋จํ ์์ฒด ํธ์คํ
์๋ฃจ์
์ cron cloning git repos ๋ฐ runnig docker build --no-cache์ผ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์คํ ์์ค ์ํํธ์จ์ด์์ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋๊ตฌ๋ docker ๋น๋ ๋ช
๋ น์ค์ ์์ ํ ์ ์์ต๋๋ค.
@jaromil ๋๋ ๊ทธ๊ฒ์ด ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. DockerHub์ ์คํ ์์ค ํ๋ก์ ํธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ ๋๋ค(์ ๋ฃ ํ๋ก์ ํธ๋ ๋ฌผ๋ก ๋น๋ ์์ ๋ํด ๋น์ฉ์ ์ฒญ๊ตฌํ์ง ์์). ๋น๋๊ฐ ๋น๋ฒํ CI/CD ํ๊ฒฝ์์๋ ๋์ฑ ์ ํ๋ฉ๋๋ค.
๊ทธ๋ ๊ฒ ํด์ผ ํ๋ ํ(docker ๋ฐ git์ ์ฌ์ฉํ๊ณ ์๊ณ ๊ณต์ ๋ณผ๋ฅจ์ ์คํํ๋ 5๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์ํ์ง ์์), ์ ๋ฒ์ ์ ์
๋ก๋ํ ๋๋ง๋ค ์ปจํ
์ด๋๋ฅผ ๋ค์ ๋น๋ํ๊ณ ์
๋ก๋ํด์ผ ํฉ๋๋ค. ์ ์ฒด ์ปจํ
์ด๋์
๋๋ค.
์ธ์ฝ๋ ์บ์ ์์ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๋ฅผ ์คํํ ๋๋ง๋ค ๋ฒ์ ์
๋ฐ์ดํธ๋ฅผ ์ํด ์ ์ฒด ์ปจํ
์ด๋ ๋์ ํด๋น ๋จ์ผ ๋ ์ด์ด๋ฅผ ๋น๋ํ๊ณ ๊ต์ฒดํฉ๋๋ค.
์์ฒด ํธ์คํ ๋ด๋น์์ ๋ํด์๋ ๋๋ ๊ฒ์ ๋๋ค. @bluzi ์๊ฒฌ์ ์ดํดํฉ๋๋ค. ์์ฒด ํธ์คํ (๋๋ aws ecr ์ฌ์ฉ)ํ๋ ๊ฒฝ์ฐ ddos โโ์ํฅ์ด ์์ต๋๋ค.
์ข์, ์ด๊ฒ์ ํ์คํ ๋ด๊ฐ ์์ํ๋ ๋ ๋ณต์กํ ์๋๋ฆฌ์ค์ ๋๋ค. ์ด์ ์ ์๊ฐ์๋... ์ผ์ข ์ nocache ๋จ์ผ ๋ ์ด์ด ํด์๋ก ์ ๋ก๋ํ๋ ๊ฒ... ํธ์ ๋ฐ ์ฌ์ ์, ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ ๋ชจ๋ฅด๊ฒ ์ด
TLDR: Docker ๋ฌธ์์ ๋ํ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ด ๋ง์ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์บ์ฑ์ ๋ํ ๋ด ์์ ์ ๋ฌธ์ /ํผ๋์ด ๋ฐ์ํ ํ ์ฌ๊ธฐ์์ ๋๋ฌ์ต๋๋ค. ์ฌ๊ธฐ์ https://github.com/moby/moby/pull/10682์์ ๋ชจ๋ ์๊ฒฌ์ ์ฝ์ ํ ๋ด ํน์ ์ฌ์ฉ ์ฌ๋ก์ ์ฌ์ฉํ ์ ์๋ ์๋ฃจ์ ์ ์ฐพ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ๋ ๋๋ ์ด์ ๋ํ Docker์ ์๋ต์ ์ฌ์ ํ ์ข์ ๊ฐ์ ๋๊ผ๊ณ ๋ง์ ๋ค๋ฅธ ์ฌ๋๋ค๋ ๊ฐ์ ์๊ฐ์ ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์? ์ฌ๋ฌ ๋ค๋ฅธ ๊ฐ๋์์ ์ด์ ๋ํด ์๊ฐํด ๋ณธ ๊ฒฐ๊ณผ ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋ชจํธํ ์ฌ์ฉ ์ฌ๋ก, ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ง๋์น๊ฒ ์ผ๋ฐํ๋ ์ฃผ์ฅ(์ ํจํ ์ ์์ง๋ง ์ ์๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ ์ ์ผ๋ก ๋ค๋ฃจ์ง ์์), ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ Docker ๊ถ์ฅ ์ฌํญ์ ๋ํ ์ค๋ช ์. ์๋ง๋ ๋๋ ์ํฉ์ ๋ช ํํ ํ๊ณ ์ด ์ํฉ์ ๋๊ธฐ ์ํด ๊ฐ์ ํ ์ ์๋ ๋ฌธ์๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
์ค ์ฌ์ด๋ฅผ ์ฝ์ผ๋ฉด ์ด ๊ธฐ๋ฅ ์์ฒญ์ ๋ํ ์ด๊ธฐ ๋๊ธ ์์ฑ์ ๋๋ถ๋ถ์ด docker image build
๋ํ ์ถ๊ฐ ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ Dockerfile์ ํน์ ์ง์ ์์ ์บ์๋ฅผ ๋นํ์ฑํํ๋ ์๋ฃจ์
์ ๋ง์กฑํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ ๋ํ Docker์ ํ์ฌ ์๋ฃจ์
(https://github.com/moby/moby/issues/1996#issuecomment-172606763์ ์ค๋ช
๋จ)์ ์ด๋ฌํ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ์ถฉ๋ถํด์ผ ํ๋ฉฐ ๋ง์ ์ฌ์ฉ์๊ฐ ์ด์ ๋ง์กฑํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. . (๋๊ตฐ๊ฐ docker image build
๋ํ ์ถ๊ฐ ์ธ์๋ฅผ ์ ๊ณตํ ์ ์๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ง๋ง ์ด ์๋ฃจ์
์ด ์ฌ์ ํ ๋ถ์ ์ ํ๋ค๋ฉด ์ด๊ฒ์ด ๋ถ์ ์ ํ ์ด์ ๋ฅผ ์ค๋ช
ํ๋ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์
๋๋ค.)
๋จ์ ์๋ ๋ชจ๋ ์ข์ ๊ฐ์ ์บ์ฑ ๋์์ ์ ์ดํ๊ธฐ ์ํด docker image build
์ ์ถ๊ฐ ์ธ์๋ฅผ ์ ๋ฌํด์ผ ํ๋ ์๊ตฌ ์ฌํญ๊ณผ ๊ด๋ จ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๊ด๋ จ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์ ์ค๋ช
๋์ง ์์์ต๋๋ค.
์ค ์ฌ์ด๋ฅผ ๋ค์ ์ฝ์ผ๋ฉด ์ด๋ฌํ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ docker image build
๋ฅผ ์คํํ๋ ์๋น์ค์ ๊ด๋ จ๋๊ฑฐ๋ docker image build
๋ฅผ ์คํํ๋ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌ๋๋ Dockerfile๊ณผ ๊ด๋ จ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. docker image build
์ถ๊ฐ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ๋ฌธ์ ์ธ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ธํ ์ค๋ช
ํ๋ ์ค๋ช
์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์
๋๋ค.)
์ด๋ฌํ ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ฉ ์ฌ๋ก์๋ Dockerfile์ ํน์ ์ง์ (์ด ๊ธฐ๋ฅ ์์ฒญ์ ์๋ ์ง์ )์์ ์บ์ฑ์ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ด ์ค์ ๋ก ํ์ํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ๋์ , ๋ง์ ์ฌ์ฉ์๊ฐ docker image build
"--no-cache" ์ธ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ ์์
์ ์ Dockerfile์ ์๋์ผ๋ก ์์ ํ ํ์ ์์ด Dockerfile ๋ด์์ ์บ์ฑ์ ์์ ํ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ ๊ฒ ๊ฐ์ต๋๋ค. ์ง๋ค. (์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช
ํ ๋ ๋ถ๋ถ ์บ์ฑ์ด ์ค์ ๋ก ํ์ํ์ง ๋๋ ์บ์๋ฅผ ์์ ํ ๋นํ์ฑํํด๋ ์ฌ์ฉ ์ฌ๋ก์ ์ถฉ๋ถํ์ง ์ฌ๋ถ๋ฅผ ์ธ๊ธํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์
๋๋ค.)
์๋น์ค๊ฐ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ docker image build
๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ Docker๋ ์ด๋ฌํ ๋ชจ๋ ์๋น์ค๊ฐ ์บ์๋ฅผ ๋ฌด์กฐ๊ฑด ๋นํ์ฑํํ๊ฑฐ๋ ์ฌ์ฉ์์๊ฒ ์บ์ ๋นํ์ฑํ ์ต์
์ ์ ๊ณตํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. https://github.com/moby/moby/pull/10682#issuecomment-73777822 ์ ๋ฐ๋ฅด๋ฉด Docker Hub๋ ์บ์๋ฅผ ๋ฌด์กฐ๊ฑด ๋นํ์ฑํํฉ๋๋ค. ์๋น์ค๊ฐ ์์ง ์ด๋ฅผ ์ํํ์ง ์๋ ๊ฒฝ์ฐ Docker๋ https://github.com/moby/moby/pull/10682#issuecomment-159255451์ ๋ํด ์๋น์ค ์ ๊ณต์
์ฒด์ ๋ถ๋ง์ ์ ๊ธฐํ ๊ฒ์ ์ ์ํ์ต๋๋ค.
์ด๊ฒ์ docker image build
๋ฅผ ์คํํ๋ ์๋น์ค์ ๊ด๋ จํ์ฌ Docker๊ฐ ์ทจํ๋ ํฉ๋ฆฌ์ ์ธ ์
์ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์
์ฅ์ ์๋น์ค ์ ๊ณต์์ ์ฌ์ฉ์ ๋ชจ๋๊ฐ ๋ฌด์์ ๊ธฐ๋ํด์ผ ํ๋์ง ์ ์ ์๋๋ก ๋์ ์ ๋๋ ๊ณณ์ ๊ณต์์ ์ผ๋ก ๋ฌธ์ํํด์ผ ํฉ๋๋ค. ์ด ์์น ๋๋ Docker Hub ์บ์ฑ ๋์์ ํ์ฌ ๊ทธ ๊ฑฐ๋/๊ณ ๋/๋ซํ ํ ์์ฒญ ๊น์์ด ๋ฌปํ ๋น๊ณต์ ๋๊ธ์ด ์๋ ๋ค๋ฅธ ๊ณณ์์๋ ๋ฌธ์ํ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ๋ฐ๋ผ์ ์๋น์ค ์ ๊ณต์
์ฒด์ ์ฌ์ฉ์ ๋ชจ๋๊ฐ ์ผ์์ ์ผ๋ก ์ด๊ฒ์ ์๋ชป ์ดํดํ์ญ์์ค. ๋น๋ ์๋น์ค์ ์บ์ฑ ์ฌ์ฉ์ ๋ํ Docker์ ์๊ฒฌ์ ์ค๋ช
ํ๋ docker build
์ฐธ์กฐ ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ณ Docker Hub ์บ์ฑ ๋์์ ๋ํ ์ ๋ณด๋ฅผ Docker Hub ์๋ํ ๋น๋ ๋ฌธ์ ์ ์ถ๊ฐํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ์ ๊ฑฐ๋ ์ ์์ต๋๊น?
Dockerfile์ด docker image build
์ง์ ์คํํ๋ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ ์ผ๋ถ ์ฌ๋๋ค์ ๊ฐ๋จํ docker build .
๋ช
๋ น(์ถ๊ฐ ์ธ์ ์์ด)์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋๋ฌด ์ผ๋ฐ์ ์ด์ด์ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์ฃผ์ฅํ์ต๋๋ค. Dockerfile ๋น๋๊ฐ ์ฌ์ฉ์์๊ฒ ์ธ์๋ฅผ ์ถ๊ฐํ๋๋ก ์๊ตฌํ๋ ๋์ ๋นํฉ๋ฆฌ์ ์
๋๋ค(์: https://github.com/moby/moby/issues/1996#issuecomment-72238673 https://github.com/moby/moby/pull /10682#issuecomment-73820913 https://github.com/moby/moby/pull/10682#issuecomment-73992301)๋ ์ฌ์ฉ์๊ฐ Dockerfile์ ์บ์ ์ฌ์ ์๋ฅผ ํ๋ ์ฝ๋ฉํ์ฌ ์บ์ฑ์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ๋ฌด์กฐ๊ฑด ๋ง๋ ๊ฒ์ ๋ถ์ ์ ํ๋ค๊ณ ์ฃผ์ฅํ์ต๋๋ค. ์ด์ ๋ํ ์์ธ/๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ์ํฉ์์ Docker๋ ์บ์ฑ์ ์ ์ดํ๊ธฐ ์ํด ์ถ๊ฐ ๋ช
๋ น์ค ์ธ์๋ฅผ ์๊ตฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ผ๋ฉฐ, ์ด๊ฒ์ด ๊ณ์๋๋ ์ข์ ์ ์์ธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. (์ด์ ๊ด๋ จ๋ ๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ์ฌ๋์ด ์๋ค๋ฉด ์์ธํ ์ค๋ช
ํ๋ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์
๋๋ค.)
๊ทธ๋ฌ๋ Docker๋ ์ถ๊ฐ ์ธ์ ์์ด docker build .
๋ฅผ ์คํํ๋ ์ฌ์ฉ์์ ์ต๊ด์ ๊นจ๋จ๋ฆฌ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ชจ๋๋ฅผ ํ๋ณตํ๊ฒ ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์บ์ฑ ๋์ ๋ฐ "--no-cache" ์ธ์๋ ๊ด๋ จ Docker ์์ต์(์: this ๋๋ this
๋๋ ์ด ). ๋ํ docker build
๋ฌธ์ ์๋ "--no-cache" ์ธ์๊ฐ ๋์ด๋์ด ์์ง๋ง ๊ทธ ์ค์์ฑ์ ์ค๋ช
ํ๊ฑฐ๋ ๋ง์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์์ ์ค์ํ๋ค๋ ์ฌ์ค์ ๊ฐ์กฐํ์ง ์์ต๋๋ค. (๋ํ docker image build
๋ฌธ์ ๋ ๋น์ด ์์ต๋๋ค. ์ต์ํ docker build
๋ฌธ์๋ฅผ ์ฐธ์กฐํด์ผ Dockerfile ์ฐธ์กฐ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก ๋ฌธ์๋ง ์ค์ ๋ก ์บ์ฑ ๋์์ ์ค๋ช
ํ๊ณ ์ญํ ์ ์ธ๊ธํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. "--no-cache" ์ธ์. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฌธ์๋ ๊ณ ๊ธ Dockerfile ์์ฑ์๋ง ์ฝ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ณ ๊ธ ์ฌ์ฉ์๋ง "--no-cache" ์ธ์์ ์ต์ํ๊ณ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ถ๊ฐ ์ธ์ ์์ด docker build .
๋ง ์คํํ ๋ค์ ์๋ํ์ง ์์ ๋ ํผ๋์ค๋ฌ์ํ๋ค๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ์๋๋๋ค. ๊ทธ๋ค์ด ๋๋ Dockerfile ์์ฑ์๊ฐ ๊ธฐ๋ํ๋/์ํ๋ ๋ฐฉ๋ฒ. "--no-cache" ์ธ์์ ๊ทธ ์ค์์ฑ์ ์ธ๊ธํ๊ธฐ ์ํด ํํ ๋ฆฌ์ผ๊ณผ docker build
๋ฌธ์๋ฅผ ์
๋ฐ์ดํธํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊น์?
+1
+1
docker์ ๊ณต์ ๋๊ตฌ bashbrew๋ฅผ ์ฌ์ฉ ํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ์ธ์๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก "๊ณต์์ ์ผ๋ก ์ง์๋๋" ๋ต๋ณ์ด ์๋ํ์ง ์์ต๋๋ค.
+1
+1
๋ด๊ฐ ์ง๊ธ ์ ์คํ๊ณ ์๋ ์ฌ์ฉ ์ฌ๋ก๋ ๊ฐ์ธ ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ ์ํ ๋น๋ ์ธ์๋ก ์ผ์์ ์ด๊ณ ๋จ๊ธฐ์ ์ธ ๋น๋ฐ์ ์ ๋ฌํ๋ ค๋ ๊ฒ์ ๋๋ค. ๋น๋ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค(๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋น๋) ์บ์๊ฐ ์์๋๊ณ ํจํค์ง๊ฐ ๋ค์ ๋ค์ ์ค์น๋๊ธฐ ๋๋ฌธ์ ์บ์ฑ์ด ์์ ํ ์ค๋จ๋ฉ๋๋ค.
ARG๋ฅผ ์ง์ ํ๊ธฐ ์ ์ COPY๋ ์คํฌ๋ฆฝํธ์์ ARG๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฐํํ๋ ค๊ณ ์๋ํ์ง๋ง ARG ์ ๋ ฅ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ARG๊ฐ ์ ์ธ๋ ํ Docker๊ฐ ๋ชจ๋ ๊ฒ์ ๋ฌดํจํํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๋ด๊ฐ ๋ณด๊ณ ์ถ์ ๋์์ ๋น๋๋ฅผ ํธ์ถํ ๋ Dockerfile ๋๋ CLI์์ ARG์ ํญ์ ์บ์ฑ์ผ๋ก ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์๋ ๊ฒ์ ๋๋ค. ๋น๋ฐ๊ณผ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ์ข ์ข ๊ทธ๊ฒ์ด ์ํ๋ ๊ฒ์ ๋๋ค. ํจํค์ง ๋ชฉ๋ก์ ๋ด์ฉ์ ARG์ ์ ๋ฌ๋ ์ธ์๊ฐ ์๋๋ผ ์บ์๊ฐ ๋ฌดํจํ๋ ์์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
์ด ์น์ ์ด ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ก ์ฌ์ฉ๋๋ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง๋ก ์ถ์ถ๋ ์ ์๋ค๋ ์ด๋ก ์ ์ดํดํ์ง๋ง package.json, requirements.txt, Gemfile ๋ฑ๊ณผ ๊ฐ์ด ํ๋ก์ ํธ์์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ๋๋ ๋ค์ ์ด์ํฉ๋๋ค. ๊ทธ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ ๊ณ์ํด์ ์ฌ๊ตฌ์ถ๋ ๊ฒ์ ๋๋ค.
์ด ๋ผ์ธ ์ง์๋ฌธ์์ CACHE OFF
๋ก +1 - ๋๋ ์ด๊ฒ์ ๋ฌธ์ ๊ทธ๋๋ก ๋ช ๋
๋์ ๊ธฐ๋ค๋ ค ์์ต๋๋ค.
๋์ปค ํ๋ธ/๋์ปค ํด๋ผ์ฐ๋์์ ์บ์๋ฅผ ๋นํ์ฑํํด์ผ ํ์ผ๋ฉฐ ํฐ ๋ ์ด์ด๋ฅผ ์บ์ํ ๋ค์ dockerfile ๋ ๋ถ๋ถ์์ nocache ์ ๋ฐ์ดํธ ๋ช ๋ น์ ์คํํ ์ ์๋ค๋ฉด ์์ฒญ๋ ์๊ฐ๊ณผ ๋น๋๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๋ณด๊ณ ์ถ์ ๋์์ ๋น๋๋ฅผ ํธ์ถํ ๋ Dockerfile ๋๋ CLI์์ ARG์ ํญ์ ์บ์ฑ์ผ๋ก ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์๋ ๊ฒ์ ๋๋ค. ๋น๋ฐ๊ณผ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ์ข ์ข ๊ทธ๊ฒ์ด ์ํ๋ ๊ฒ์ ๋๋ค. ํจํค์ง ๋ชฉ๋ก์ ๋ด์ฉ์ ARG์ ์ ๋ฌ๋ ์ธ์๊ฐ ์๋๋ผ ์บ์๊ฐ ๋ฌดํจํ๋ ์์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
--build-arg PASSWORD=<wrong>
๋ --build-arg PASSWORD=<correct>
์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ์ ์์ผ๋ฏ๋ก ํจํค์ง ๋ชฉ๋ก์ ๋ด์ฉ์ ๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ํจ๊ณผ๊ฐ ์์์ง ํ์ ํ ์ ์์ต๋๋ค. ๋น๋๋ ์คํ๋๋ ๋จ๊ณ( make DEBUG=1 foo
์ make DEBUG=0 foo
๊ฐ ๋์ผํฉ๋๊น?)์ ํ๊ฒฝ ๋ณ์ ์ค์ /๋ณ๊ฒฝ์ด ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ์์ฒด์ ์ผ๋ก ์์ธกํ ์ ์์ต๋๋ค. ํ์ฌ ์ ์ผํ ์์ธ๋ xx_PROXY
ํ๊ฒฝ ๋ณ์์ ๋ํ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์๋ ํ๋ก์๊ฐ ํ์ํ ์ ์์ง๋ง ๋ค๋ฅธ ํ๋ก์๋ก ์ ํํ๋ฉด ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์์ฑ๋์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ด ์๋ํ๋ ค๋ฉด ์บ์ฑ์ ์ํด ๋ฌด์ํ ํน์ ํ๊ฒฝ ๋ณ์(/build arg)๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
BuildKit์ ์ด์ RUN --mount=type=secret
๋ฐ RUN --mount=type=ssh
๋ํ ์คํ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋น๋ฐ/์๊ฒฉ ์ฆ๋ช
์ ์ ๋ฌํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ง๋ง ์ด๋ฌํ ๋น๋ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์บ์๋ฅผ ๋ฌดํจํํ ์ ์์ต๋๋ค(ํ์คํ์ง ์์, ๋น๋ํท ๋ฌธ์ ์ถ์ ๊ธฐ(https://github.com/moby/buildkit/issues)์์ ๋ถ๋ฌ์ต๋๋ค.
๋์ปค ํ๋ธ/๋์ปค ํด๋ผ์ฐ๋์์ ์บ์๋ฅผ ๋นํ์ฑํํด์ผ ํ์ต๋๋ค.
Docker Hub/Cloud๋ ์ค์ ๋ก ์บ์ฑ์ _์ฌ์ฉ_ํฉ๋๊น? ์บ์ฑ์ด ์ฌ์ฉ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค(์: ์์ ๋น๋ ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์์).
DockerHub๋ ๋น๋ ์บ์ฑ์ ์ฌ์ฉํ์ง ์์๋ ๊ฒ์ผ๋ก ๊ธฐ์ตํฉ๋๋ค. ํ์ง๋ง ์ด ํฐ์ผ ์ง์ ์ Docker Cloud์์ ์๋ํ๋ ๋น๋๋ฅผ ์ดํด๋ณด๊ณ ์์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ง๋ง ๊ฐ ๋ถ๊ธฐ์ Autobuild ์ฌ๋ผ์ด๋ ์์ ํ์ฌ Building Caching ์ฌ๋ผ์ด๋๊ฐ ์์ต๋๋ค.
git clone
์ ๊ฐ์ ๋จ๊ณ๋ ๋ณ๊ฒฝ๋์ง ์์ ์ง์๋ฌธ ๋ฌธ์์ด๋ง ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ์ต์ repo ๋ค์ด๋ก๋๋ฅผ ์ป์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋น๋ ์บ์ฑ์ ํ์ฑํํ ์ ์์ต๋๋ค. ์ค๋ ์ด ๋ฌธ์ ๋ฅผ ์ฐ๋ฆฌ ํธ์์ ๋ช ๋
๋์ ๊ฐ์์ฒ๋ผ ์ง๋ด์จ ๋๋ฃ์๊ฒ ์ค๋ช
ํ๋ฉด์ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์์ ํฐ ๋ถ์์ ํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋๋์ต๋๋ค.
๋ด๊ฐ ๋ง์ด ์ ํธ ์ด๊ธฐ git clone && make build
์บ์ ๋ ํ ๋ฐ๋ก ํ ์ NO CACHE
A์ git pull && make build
๋จ๊ณ๋ฅผ ์ด๋ฏธ ๋ง์ง๋ง์ผ๋ก ์ค์น๋ฟ๋ง ์๋๋ผ ํจ์ฌ ์์ ์ฝ๋ ์
๋ฐ์ดํธ + ์ข
์์ฑ์ ์ป์ ์ ์์ต๋๋ค ๋ฐ๋ผ์ ๋น๋๋ฟ๋ง ์๋๋ผ ์ง๊ธ ๋น์ฅ ์๋ฐฑ MB์ ๋ ์ด์ด๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํ๊ณ ๊ต์ฒดํด์ผ ํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ํด ๋๋์ ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ์บ์ฑํ๋ฏ๋ก ๋งค์ฐ ๋นํจ์จ์ ์
๋๋ค.
ํฌ๊ธฐ๋ ๋ง์ ํ๋ก์ ํธ์ ๋ง์ ์ข ์์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์คํ ํจํค์ง + Perl CPAN ๋ชจ๋ + Python PyPI ๋ชจ๋ ๋ฑ
Alpine์ ์ฌ์ฉํด๋ ์์คํ ํจํค์ง ์ข ์์ฑ๊ณผ CPAN ๋ฐ PyPI ์ข ์์ฑ์ ์ถ๊ฐํ๋ฉด ๋ ์์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์๋ ๋์ Alpine์ ์ฌ์ฉํด ์์ง๋ง ์ผ๋จ ์ข ์์ฑ์ด ๋ง์ผ๋ฉด ๊ทธ๋ ์ง ์์ต๋๋ค. ์์คํ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ถ๋ถ์ด ๋ฐ๋ก ๋ค์ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ด ๋ ์๊ฒ ์์ํ๋ฉด ๋ง์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๋ชจ๋ ์์คํ ํจํค์ง + CPAN + PyPI ๋ชจ๋์ ํฌํจํ๋ ์ด์ ๊ณ์ธต์ ์บ์ฑํ๋ค๋ ๊ฒ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ค์น๋ ์๋ํ๋ ๋ชจ๋์ ์ ๋ฐ์ดํธํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํธ์ ๋ง์ง๋ง ๊ณ์ธต์์ ๊ฑฐ์ ๋ณ๊ฒฝ๋์ง ์์์ผ ํจ์ ์๋ฏธํฉ๋๋ค(๋ด bash-tools์ ์คํฌ๋ฆฝํธ๋ฅผ
ํ๋์ ARG๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ ๊ฐ์ ํธ๋ฆญ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์์ต๋๋ค(http://dev.im-bot.com/docker-select-caching/๊ณผ ๊ฐ์ ๋ธ๋ก๊ทธ๋ฅผ ๊ฒ์ํ์ฌ ์ป์ ์์ด๋์ด).
Dockerfile์์:
ARG NOCACHE=0
๊ทธ๋ฐ ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๋์ปค ๋น๋๋ฅผ ์คํํฉ๋๋ค.
docker build --build-arg NOCACHE=$(date +%s) ...
ํ์ง๋ง Docker Cloud์์๋ ์ด๊ฒ์ด ๊ฐ๋ฅํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ๊ฒฝ ๋ณ์๊ฐ ์์ง๋ง ์์ epoch์ ๊ฐ์ ๋์ ๋ด์ฉ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค(๋๋ ์ ์ด๋ ๋ด๊ฐ ์ฐพ์ ์ ์๋ ๋ฌธ์ํ๋์ง ์์). ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์ง์๋ฌธ ํ์ ๋ํ ์บ์ฑ์ ๋ฌดํจํํ ์ง ํ์ ํ ์ ์์ต๋๋ค.
@thaJeztah ์, ์ด๋ฌํ ์ข ๋ฅ์ ํ๋์ ์๋ชป โโ์ดํด๋๊ฑฐ๋ ๋จ์ฉ๋๋ฉด ์ฝ๊ฒ ๋ถ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ง๋ง ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋งค์ฐ ํ๋ฅญํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
--build-arg PASSWORD=<wrong>
๋--build-arg PASSWORD=<correct>
์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ์ ์์ผ๋ฏ๋ก ํจํค์ง ๋ชฉ๋ก์ ๋ด์ฉ์ ๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ํจ๊ณผ๊ฐ ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ๋ง์ง๋ง ํจํค์ง ๋ชฉ๋ก์ด ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด ์ํธ๊ฐ ๋ง๋ ํ๋ฆฌ๋ ์๊ดํ์ง ์์ต๋๋ค. ํจํค์ง๋ ์ด๋ฏธ ์ด์ ์ด๋ฏธ์ง์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์คํํ๋ ์ฌ์ฉ์๋ ์ด๋ฏธ ์ก์ธ์ค ๊ถํ์ด ์์ผ๋ฉฐ(์ฆ, ๋ณด์ ๋ฌธ์ ๊ฐ ์๋) ์ด์ ์ ์ํธ๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ Dockerfile ์์ฑ์๊ฐ ์ค์น์ ์คํจํ ๋ถ๋ด์ด ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ ํ ํ์๋ ํจํค์ง๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์นํ ์ ์๋ ๊ธฐํ๊ฐ ๊ณ์ ์ฃผ์ด์ง๋๋ค.
์, docker build --force-cache-build-arg SECRET=supersecret
์ ๊ฐ์ ๊ฒ์ ๊ทธ๋ฆฌ๊ณ ์์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ฝค ํฌ๋ฐํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋ ๋์ ๊ฒ์ ์๊ฐํด ๋ผ ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค.
@HariSekhon ๋น์ ์ ์ ์ค ์ผ์ด์ค๋ ์ค์ ๋ก ๋์ ๋ฐ๋์ธ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง๋ง ๋ง์ต๋๊น? ๋น์ ์ ์ ํ์ ์ผ๋ก ํ์ด ์บ์๋ฅผ ๊ณต๊ฒฉํ๊ธฐ๋ณด๋ค๋, ์ ํ์ ์ผ๋ก ํ ๋ฏธ์ค์ ์บ์ ์ถ์ด?
์ด๊ฒ์ ์ถ๊ฐํ๋ฉด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
ADD http://date.jsontest.com/ /tmp/bustcache
ํ์ง๋ง ๊ทธ ์ฌ์ดํธ๋ ์ง๊ธ ๋ค์ด๋์ด ์์ต๋๋ค. ์ด๊ฒ์ ์๋ํด์ผํฉ๋๋ค
ADD http://api.geonames.org/timezoneJSON?formatted=true&lat=47.01&lng=10.2&username=demo&style=full /tmp/bustcache
@itdependsnetworks
์๋ฒฝํฉ๋๋ค. ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ์ฌ์ดํธ๊ฐ ์ง๊ธ ๋ฐฑ์ ๋์์ต๋๋ค. ์ด๋ฏธ์ง์ ๋น๋ ๋ ์ง๋ฅผ ๊ธฐ๋กํ๋ ๊ฒ๋ ์ ์ฉํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์๋ํ๊ณ ์ ์ฌํ ๋ค๋ฅธ ํน์ ํ์ผ์ด ๋งค๋ฒ ๋ณ๊ฒฝ๋์ด์ผ ํฉ๋๋ค.
COPY /dev/random ...
๊ทธ๋ฌ๋ RUN ls -l -R /etc
๊ฐ ๊ทธ๋ฌํ ํ์ผ์ด ์กด์ฌํ๋ค๊ณ ํ์ํ์ง๋ง ํญ์ ๋ฐ๊ฒฌ๋์ง ์์์์๋ ์๋ํ์ง ์์์ต๋๋ค. ํน์ ํ์ผ ์ฌ์ฉ์ ๋ํ ๋ณดํธ ์ฅ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ DockerHub/Docker Cloud์ ๋ํด ๋ ๋ง์ด ์๊ฐํฉ๋๋ค. ์ฌ์ ๋น๋ ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ์คํฌํ๊ฐ ํฌํจ๋ ํ์ผ์ ์์ฑํ ๋ค์ ์บ์ ๋ฒ์คํธํ๋ ค๋ ๋ ์ด์ด ๋ฐ๋ก ์์ ์ด๋ฏธ์ง์ ๋ณต์ฌํ์ฌ ๋น์ทํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์๋ ์์ต๋๋ค. ์์ ํ์๋ ๊ฒ์ด ๋ก์ปฌ ๋์ปค ๋ฐ ํด๋ผ์ฐ๋ ๋น๋์ ๋ ์ด์์ฑ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ์บ์ ๋ฌดํจํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํด ๋ ์์ ์ ์ธ ๋ ์ง ์ธ์ ์ฌ์ดํธ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ์์ ๋ ๊ฐ์ง ๋ชจ๋ ๋ฐ๋ชจ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉฐ ํ ๋น๋์ด ์์ผ๋ฏ๋ก ์ ๋ขฐํ ์ ์๊ณ ๋น๋๋ฅผ ๋ฌด์์๋ก ์ค๋จํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๊ฒ์ ํญ์ ์ผ์ผ ํ ๋น๋์ ๊นจ๊ณ ๋ ๋ฒ์งธ ๊ฒ์ ์ด์ ์ด ์ค๋ฅ๋ฅผ ์ ๊ณตํฉ๋๋ค.
{"status": {
"message": "the daily limit of 20000 credits for demo has been exceeded. Please use an application specific account. Do not use the demo account for your application.",
"value": 18
}}
๋ชจ๋ ๋น๋์์ ์คํ๋๊ณ ์ถ๋ ฅ์ด ๋ง์ง๋ง ๋น๋์ ๋ค๋ฅธ ๊ฒฝ์ฐ ํ์ ๋ ์ด์ด๊ฐ ๋ค์ ๋น๋๋๋ ๋์ปค ํ์ผ์ ๋ฃ์ ์ ์๋ ์ง์นจ์ ๊ฐ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฌ์ฉ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
FROM something
...
CACHE_BUST git ls-remote my-git-repo HEAD
RUN git clone --depth=1 my-git-repo ...
...
CMD ["my-cmd"]
์์ CACHE_BUST ๋ช ๋ น์ ์๋ ๋ช ๋ น์ ์ง์ ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ HEAD์์ SHA๋ฅผ ์ถ๋ ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ด dockerfile์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ผ ๋ณต์ ํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์์์ ๋ณผ ์ ์๋ฏ์ด ๋น๊ฒฐ์ ์ ๋คํธ์ํฌ ๊ด๋ จ ๊ณ์ธต๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ํ์ฌ ์ฌ๊ธฐ์์ ๋ชจ๋ ์๊ตฌ ์ฌํญ์ ๋ํด ARG๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๋ dockerfile ์์ฒด๋ง ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข์ ๋ dockerfile์ ์ฌ์ฉํ๋ ๋น๋ ์คํฌ๋ฆฝํธ๊ฐ ์ข ์ข ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. (๊ฒ๋ค๊ฐ ์ผ๋ถ ๋๊ตฌ๋ ์ธ์๋ฅผ ํ์ฉํ์ง ์์)
ํ์ฌ ์ํฌํ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ARG SHA_TO_BUILD
RUN echo SHA_TO_BUILD
RUN git clone ...
...everything else reliant on that clone
$> ./build-my-image.sh $(get-latest-sha)
๊ฐ ๋ช ๋ น์ ๋ํด ์บ์ฑ์ ์ผ๊ณ ๋๋ ๊ฒ์ ๋์ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ ๋ ์ด์ด๋ฅผ ๋ค์ ๋น๋ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋๋จธ์ง ๋ ์ด์ด๋ ๋ค์ ๋น๋ํด์ผ ํ๋ ๋ฐฉ์์ผ๋ก ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค. ํ์ง๋ง ํ์ผ์ ํน์ ์ง์ ์์ ๊ฐ์ ๋ก ๋ค์ ๋น๋ํ ์ ์๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ๋ฅญํ ๊ธฐ๋ฅ์ธ๋ฐ ์ ์์ง ๋ณด๋ฅ ์ค์ ๋๊น?
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ํ์ผ์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์์ง๋ง Dockerfile
๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ์
๋๋ค.
์๋ฅผ ๋ค์ด COPY file.txt .
์๊ณ file.txt
์์ ํ๋ฉด Docker๋ ์บ์๋ ์ด์ ๋ฒ์ ์ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
Docker๊ฐ ๋ณต์ฌํ ํ์ผ์ ์ฒดํฌ์ฌ์ ์ํํ๊ณ ๋ค์ ๋ฒ์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์บ์๋ ๊ณ์ธต์ ์ฌ์ฉํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์ง๊ธ ๋น์ฅ์ --no-cache
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ ๋ค์ด๋ก๋ํ๊ณ ํ์ํ ๊ฒ๋ณด๋ค ๋ ๋ง์ด ์ํํฉ๋๋ค(์๊ฐ๊ณผ ๋์ญํญ ๋ญ๋น).
@brennancheung ๊ทธ๋ ๋ค๋ฉด ๋ฒ๊ทธ์ ๋๋ค. ์ฌํ ๊ฐ๋ฅํ ๋จ๊ณ๊ฐ ์๋ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ญ์์ค.
@brennancheung์ ์์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/brennancheung ์ ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ ๋ก๋ํฉ๋๋ค. ๋น์ ์ ํ ํ์๊ฐ ์์ต๋๋ค
์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ์ค์นํ๊ณ ์ด๋ฌํ ํ์ผ๊ณผ ๋ช
๋ น์ ์
๋ฐ์ดํธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๊ฒ๊ณผ ๊ด๋ จ๋, ๋์ปค๋ฅผ ์คํํ๊ณ ์ง์, ์์คํ
์ด ์ค์ ๋ฉ๋๋ค.
๋ฌผ๋ก ์ข
์ข
๊ตฌ์ฑ ํ์ผ์ ๋ ๋ถ๋ถ์ ๋ ๊ฐ๊น๊ฒ ๋ ์ ์์ต๋๋ค.
ํ์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค.
Am Mi., 20. Mรคrz 2019 um 00:10 Uhr schrieb Tibor Vass <
์๋ฆผ@github.com>:
@brennancheung https://github.com/brennancheung ๊ทธ๋ ๋ค๋ฉด,
๊ทธ๊ฒ์ ๋ฒ๊ทธ์ ๋๋ค. ์ฌํ ๊ฐ๋ฅํ ๋จ๊ณ๊ฐ ์๋ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ญ์์ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/1996#issuecomment-474666893 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ALBon0edO9m5BU3C5Ik2i__9eogZc1Jiks5vYaaNgaJpZM4BB_sR
.
--
ํฐ์๊ณ ๋ก๋๋ฆฌ๊ฒ์ค
์ด๊ฒ์ ์๋ํ์ต๋๋ค https://github.com/moby/moby/issues/1996#issuecomment -185872769
๊ทธ๋ฌ๋ ์บ์์ ์ ์๋ฟ๋ง ์๋๋ผ ์ฒ์ ์ฌ์ฉ ์/ํ ์บ์์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
https://docs.docker.com/engine/reference/builder/#impact -on-build-caching
Dockerfile์ด ์ด์ ๋น๋์ ๊ฐ์ด ๋ค๋ฅธ ARG ๋ณ์๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ ์ ์๊ฐ ์๋๋ผ ์ฒ์ ์ฌ์ฉํ ๋ "์บ์ ๋๋ฝ"์ด ๋ฐ์ํฉ๋๋ค.
@samstav "์ฒ์ ์ฌ์ฉ" RUN
1 RUN
ARG
( ARG
๊ฐ ๋น๋ ๋จ๊ณ์ ์๋ ๊ฒฝ์ฐ).
ARG FOO=bar
FROM something
RUN echo "this won't be affected if the value of FOO changes"
ARG FOO
RUN echo "this step will be executed again if the value of FOO changes"
FROM something-else
RUN echo "this won't be affected because this stage doesn't use the FOO build-arg"
์์ ๋ด์ฉ์ ์ฐจ์ธ๋ ๋น๋(BuildKit)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฝ๊ฐ ๋ฌ๋ผ์ง๋ฏ๋ก DOCKER_BUILDKIT=1
ํ์ฑํํ๋ฉด BuildKit์ด ์ต์ข
๋จ๊ณ์ ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๋น๋ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์๊ธฐ ๋๋ฌธ์(๋๋ ๋น๋ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค) ์์ ํ ์บ์๋ ์ ์๋ ๊ฒฝ์ฐ)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Dockerfile์ CACHE ON ๋ฐ CACHE OFF๋ ์ด๋ป์ต๋๊น? ๊ฐ ๋ช ๋ น์ ํ์ ๋ช ๋ น์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.