docker build -t my/thing -f my-dockerfile .
๋ฅผ ์ง์ ํ์ฌ ํ์ผ์ ์ถ๊ฐํ๊ณ ์ฌ๋ฌ ๊ฐ์ dockerfile์ ๊ฐ์ง ์ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ์กฐ์ฌํ๊ณ ์์๋ค
์ฌ์ฉ๋ฒ: ๋์ปค ๋น๋ [์ต์ ] ๊ฒฝ๋ก | URL | -
๊ทธ๋์ ๋น์ ์ด ์คํํ๋ฉด
๋์ปค ๋น๋ -t my/thing my-dockerfile
tar ํ์ผ์ด ๋๋ฌด ์งง๋ค๊ณ ๋ถํํฉ๋๋ค.
'PATH' ์ต์ ์ด ๋ฌธ์ํ๋์ง ์์ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์ผ๋ถ ๋ ๊ฑฐ์ ์๋ฏธ๊ฐ ์์ ์ ์์ต๋๊น?
๊ทธ๋์ - PATH๊ฐ ํ์ผ์ด๊ณ Tarfile์ด ์๋์ง ๊ฐ์งํ๋์ง ๊ถ๊ธํฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ํ ์คํธ์ ์ฌ์ฉํ๋ Dockerfile ์ธํธ๊ฐ ์์ผ๋ฉฐ, ํ๋์ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํฌํจํ๊ณ ์ ์ฒด ์ปจํ ์คํธ๋ ๊ฐ๊ณ ์ถ์ต๋๋ค.
ํด๋น PATH๋ ํน์ Dockerfile์ด ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์ค, ๊ทธ๋ฐ ๋ค์ ์๋ฒ๋ก ๋ณด๋ด๊ธฐ ์ํด ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ Tars๋ก ๋ง๋ญ๋๋ค. ๋ฉ์ง๊ตฐ์!
isafile์ ๊ฐ์งํ ์ ์๋๋ก ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ tar๋ก ๋ง๋ ๋ค์ ํด๋น tarball์ Dockerfile์ ์ง์ ๋ ํ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
๋๋ -f๋ฅผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ - Dockerfile ์ ์๊ฐ ํ์ด๋ก๋์ ๋ณ๋๋ก ์กด์ฌํ๋๋ก ํ์ฉ
์ด์ ํ ์คํธ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์๋ณด๊ธฐ ์ํด ์๋ํด ๋ณด๊ณ ๋์๊ฒ ๋ง๋์ง ํ์ธํ์ญ์์ค.
์๋ฌด ๊ฒ๋ tarํ์ง ์์ต๋๋ค - PATH๋ Dockerfile
๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ ๋๋ ํ ๋ฆฌ์
๋๋ค.
๊ทธ๊ฒ์ด ๊ทธ PATH๋ก ํ๋ ์ ๋ถ๋ ์๋๋๋ค - ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด, '์ปจํ ์คํธ'๋ ๋๋ ํ ๋ฆฌ์ ๋ฌด๊ฒ๋ฅผ ์ธก์ ํ์ฌ ์๋ฒ๋ก ๋ณด๋ด์ง๋๋ค.
(๊ทธ๋, ๊ทธ๋์ ๋๋ ์ฌ์ ํ go๋ฅผ ๋ชจ๋ฅธ๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ง๋ ๋ช ๋ถ ๋์๋ง ์ฝ๋๋ฅผ ์ฝ์๋ค.
๋ง์ต๋๋ค. ๋ฐ๋ผ์ ADD๋ฅผ ํตํด ์ฐธ์กฐ๋๋ ๋ชจ๋ ๋น์๊ฒฉ ํ์ผ๋ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ๋ชฌ์ด ํด๋น ํ์ผ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์, ๋๋ ๋น์ ์ด ๋งํ๋ ๊ฒ์ ๋ด ๋๋ค - ์ - ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ํ๋ ๊ฒ์ ๋๋ค - -f๋ฅผ ์ฌ์ฉํ์ฌ dockerfile์ ์ง์ ํ ๋ค์ ๋ณ๋์ ๋๋ ํ ๋ฆฌ PATH๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ทธ๋์ ๋๋ ๊ฐ์ง ์ ์์๋ค:
docker build -t my/thing fooproj
docker build -t my/thing -f debug-dockerfile fooproj
ํฌํจ์ด ์ง์ ๋ dockerfile ๋๋ PATH์ ์๋์ ์ด์ด์ผ ํฉ๋๋ค. ์์ง ์ค์ํ์ง ์์ง๋ง.
์ฌ๋ฏธ์๋:
docker build -t my/thing fooproj
docker build -t my/thing -f ../../debug-dockerfile fooproj
docker build -t my/thing -f /opt/someproject/dockerfiles/debug-dockerfile fooproj
์ถ๊ฐ ๋ณด๋์ค๋ก - ์์ง CmdBuild ํ ์คํธ๊ฐ ์์ผ๋ฏ๋ก ๋จผ์ ๋ฌด์์ ๋ฐฐ์ธ์ง ์ถ์ธกํด ๋ณด์ธ์. :)
@SvenDowideit ์ด ์์ ์ ํ๊ณ ์์ต๋๊น? ์ค๋ ํดํนํ ๊น ์๊ฐ์ค์ด์๋๋ฐ
์ฒ์ฒํ ์ฝ๋์ ์ต์ํด์ง๊ณ ๊ฐ์ญ์์ค. ์ด์ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋๋ฌด ์ฌ๋ฏธ์์ต๋๋ค. ํ ์คํธ ์ปค๋ฐ์ ์ฌ์ฉํ์ฌ ๋์์ ๋ฐ์ ์ ์์ต๋๋ค.
๋ด๊ฐ ํ ๊ฒ์ด๋ค :)
์ด ๊ธฐ๋ฅ๋ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ 3๊ฐ์ ๋ค๋ฅธ ๋ชจ๋์์ ์คํํ ์ ์๋ ์์คํ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ฐ ๋ชจ๋์ ๋ํด 1๊ฐ์ 3๊ฐ์ ๋ค๋ฅธ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ณ ์ถ์ต๋๋ค. ์ด๋ CMD๋ง ๋ค๋ฅธ 3๊ฐ์ ๊ฑฐ์ ๋์ผํ ๋์ปค ํ์ผ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฝ๋ก๋ ๋๋ ํ ๋ฆฌ์ผ ๋ฟ์ด๊ณ ๋๋ ํ ๋ฆฌ๋ ADD ๋ช ๋ น์ ์ปจํ ์คํธ์ด๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๊ทธ๋์: ๋์๊ฒ์ +1!
์ด๊ฒ์ #1618๊ณผ ๋์ผํ ์ต์ข
๋ชฉํ๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค(๋น๋ก ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ). ์ฌ๊ธฐ์ ์ค๋ช
๋ ๋๋ก ์ฌ๋ฌ Dockerfile ๋ฐ ํฌํจ ์์คํ
๊ณผ ๋น๊ตํ์ฌ ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ์ฌ๋ฌ TAG
๋ช
๋ น์ด ์๋ ๋จ์ผ Dockerfile์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๊ฐ?
Dockerfile์ ํ์ดํํ ์ ์๋ ๊ฒ์ฒ๋ผ ๊ฒฝ๋ก๋ ์ง์ ํ ์ ์์ด์ผ ํฉ๋๋ค. #1618์ด ๋ฌด์์ธ์ง ์๊ณ ์ถ์ง๋ง ์ด๊ฒ์ด ๋ ๋ง์ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ์๋ ๊ณณ์ ๋๋ค : https://github.com/peterbraden/docker/compare/2112-specify-dockerfile?expand=1
๋ฌธ์์ Dockerfile์ด ํฌํจ๋ ๋๋ ํ ๋ฆฌ๊ฐ ๋น๋ ์ปจํ ์คํธ๋ผ๊ณ ๋ช ํํ๊ฒ ๋ช ์๋์ด ์์ง ์๋ค๋ ์ฌ์ค ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค. ๋น๋ ์ปจํ ์คํธ๊ฐ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ๋ผ๋ ์๋ชป๋ ๊ฐ์ ์ ํ์ผ๋ฏ๋ก ๋์ Docerfile์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํ๋ฉด ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ ์ค ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ์์ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ ํ์ผ์ด "ํด๋น ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ ์์" ์ค๋ฅ์ ํจ๊ป ํญ๊ฒฉ๋์์ต๋๋ค.
๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ชจ๋ ์์ด๋์ด
๋์ปค ๋น๋ ๋์ปค ํ์ผ
์ปจํ ์คํธ ์ ๋ก๋ ์ค
2013/12/11 21:52:32 ์ค๋ฅ: ๋น๋ ์ค๋ฅ: Tarball์ด ๋๋ฌด ์งง์ต๋๋ค.
@bscott ๋์ docker build .
๋ฅผ) ์๋ํ์ญ์์ค. ๋น๋๋ ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ด๊ฒ์ด "๋น๋ ์ปจํ
์คํธ"์
๋๋ค. :)
์์ Thx!, ๋ค๋ฅธ Docker ํ์ผ ์ค์์ ์ ํํ๊ณ ์ถ์ต๋๋ค.
๋์๊ฒ์ +1.
๋ด ์์ค์์ ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๊ฐ ์ด๋ฏธ์ง๋ ๋์ผํ ์ปจํ
์คํธ๋ฅผ ๊ตฌ์ถํด์ผ ํ๋ ๋ณ๋์ ๊ด์ฌ์ฌ์
๋๋ค. ๋จ์ผ Dockerfile์ ์ค์ผ์ํค๋ ๊ฒ(#1618์์ ์ ์ํ ๋๋ก)์ ์๋ฑํ ์ผ์
๋๋ค. ๋ด ์์ค์ 3๊ฐ์ ๊ฐ๋ณ <image-name>.docker
ํ์ผ์ ๋ณด๊ดํ๋ ๊ฒ์ด ํจ์ฌ ๊นจ๋ํ ๊ฒ์
๋๋ค.
๋๋ ์ด๋ฐ ๊ฒ์ด ๊ตฌํ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
์ด๊ฒ์ ์ฒ์์ ๋ณด์ด๋ ๊ฒ๋ณด๋ค ๊ตฌํํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ./Dockerfile
๊ฐ ๊ฝค ๋ง์ด ๋ค์ด๊ฐ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ธฐ ์กฐ์ฌ ํ์ ์ต์ํ ๋ค์ ํ์ผ์ด ํฌํจ๋ฉ๋๋ค.
api/client.go
archive/archive.go
buildfile.go
server.go
client
์ฉ๋ archive
ํ๋ฅด build context
ํ๊ณ ๊ทธ๊ฒ์ ๋ณด๋ด๋ server
ํ ์ฌ์ฉํ๋ archive
ํ๋์ build context
๋ฐ์ดํธ๋ฅผ buildfile
.
๊ฐ์ฅ ์ฌ์ด ๊ตฌํ์ client
๋ฐ archive
๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ด ์ต์
์ ํตํด ์ง์ ๋ ํ์ผ๋ก tar์ ./Dockerfile
๋ฅผ ๋ฎ์ด์ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
@thedeeno ์ ๋ง ๋นจ๋ฆฌ ์ดํด๋ณด๊ณ ๋ณ๊ฒฝ ์ฌํญ์
๋์๊ฒ์ +1!
๋๋ # 1618๊ณผ # 2112๋ฅผ ๋ชจ๋ ๋ฐ๋ผ ์์ผ๋ฉฐ ์ด๊ฒ์ด ๊ฐ์ฅ ์ฐ์ํ ์๋ฃจ์ ์ ๋๋ค.
๋ด ๊ฐ๋ฐ์์ ์ด ๊ธฐ๋ฅ์ด ๋งค์ฐ ํธ๋ฆฌํ ํ ๊ฐ์ง ํน๋ณํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค... "์น" ๋ฐ "์์ ์" ์ญํ ์ด ๋ชจ๋ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์์ ํ ๋. ์ด ์ํฉ์ ๋ํด "Dockerfile-web"๊ณผ "Dockerfile-worker"๋ผ๋ ๋ ๊ฐ์ ๋์ปค ํ์ผ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ๋ค ๋น๋ํ๊ณ ํ๊ทธ๋ฅผ ์ง์ ํ๊ณ ๋ด ์ด๋ฏธ์ง ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ํธ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ก๋ ๋ฐธ๋ฐ์์ ์ฌ๋ฌ ์์ ์ ๋ค์์ ์ฌ๋ฌ ์น ํ๋ฐํธ ์๋ ์ธ์คํด์ค๋ฅผ ์คํํ์ฌ ๋๊ธฐ์ด์ ํธ์๋๋ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
#2745์ ๋์์ผ๋ก +1.
+1
Dockerfile
๊ฐ ํ๋์ฝ๋ฉ๋์ด ์๊ณ ๋น๋ ์ปจํ
์คํธ๊ฐ ๊ฐ์ ๋ก Dockerfile์ ๋๋ ํ ๋ฆฌ๊ฐ ๋๋ฉฐ ๋ช
๋ น์ค ํ๋๊ทธ๋ก๋ ์ฌ์ ์ํ ์ ์๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค. ์ด๋ ๊ฐ๋ฐ, ํ
์คํธ ๋ฐ ๋ฐฐํฌ ๋๊ตฌ๋ก์์ Docker์ ์ ์ฉ์ฑ๊ณผ ์ ์ฐ์ฑ์ ์ฌ๊ฐํ๊ฒ ์ ํํฉ๋๋ค.
+1
๋๋ ๊ทธ ๋ณํ์ ๊ฐ์ฌ ํ ๊ฒ์
๋๋ค
+1
์ ๋ง ํ์ํฉ๋๋ค.
@shykes ์ด ๋ณํ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ธ์? ๋๋ ๋น์ ์ด ๋์ํ๊ฑฐ๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ ๋์ ํด๊ฒฐ์ฑ ์ ์๊ณ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋๋ ์ฃผ์ ํ๋ค.
ํํธ์ผ๋ก ๋๋ ์ฌ๋๋ค์ด ์์ ์ ๋น๋๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ ๋ฅ๋ ฅ์ ์ ํํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ฐ๋ฉด์ _run -v /host:/container_ ๋ฐ _expose 80:80_๊ณผ ๊ฐ์ ์ผ์ด ์ผ์ด๋ ๊น ๊ฑฑ์ ๋ฉ๋๋ค. ๋ค์ ๋งํด, ์์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง ์๊ณ ์๋ 1%๋ ๋ฉ์ง ์ฌ์ฉ์ ์ ์๋ฅผ ์ถ๊ฐํ ์ ์๊ณ ๋๋จธ์ง 99%๋ ์์ ์ ๋ฐ์ ์ด์ ์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ผ๋ฐ ๋ณผ๋ฅจ ๋์ ํธ์คํธ ํ์ฌ ๋ณผ๋ฅจ์ผ๋ก ์์ํ๋ ์๋ก์ด Docker ์ฌ์ฉ์๊ฐ ๋ง์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฌด ๋ง์ ์ฌ๋๋ค์ด ์ ๋นํ ์ด์ ์์ด ํธ์คํธ๋น ํ ๋ฒ ์ด์ ์คํํ ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๊ธฐ ๋๋ฌธ์ _expose 80:80_ ๊ตฌ๋ฌธ์ ๋ชจ๋ ์ฌ์ฉํ์ง ์์์ผ ํ์ต๋๋ค.
๊ทธ๋์ ์ ์ง๋ฌธ์: _docker build๋ก ๋ฐ๋ณต์ ์ผ๋ก ๋น๋ํ ์ ์๋ ๋ง์ ์์ค ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ํ์ด ์์ต๋๊น?
์์ค ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ญ์ ํ๊ณ ๋ชจํธ์ฑ์ด๋ ์ฌ๋์ ๋ฐ๊ฒฌ ์์ด ์๋์ผ๋ก ๋น๋ํ ์ ์๋ค๋ ๊ฒ์ Dockerfile์ด ์ ์ฉํ ์ด์ ์ค ํ๋์ ๋๋ค. ์ด ํ ๋ฆฌํ์คํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋นํ ์ด์ ์์ด ๋ง์ ๊ฒฝ์ฐ์ ๊นจ์ง ์ํ์ด ์์ง ์์ต๋๊น?
@shykes ์ด Dockerfile ์ ํ ๋๋ฌธ์ _because_ ์ค๋ช ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
Dockerfile
๋น๋๋ฅผ ๊ฐ๋ ๊ฒ์ด ๊ฐ์ฅ ํฉ๋ฆฌ์ ์
๋๋ค. JAR ์ฃผ๋ณ์์ ๋ฐํ์ ํ๊ฒฝ์ ์คํํฉ๋๋ค.๋ฐ๋ผ์ ๋น๋ ํ๊ฒฝ์ ๋น๋ ๋ฐ ์คํํ๊ณ JAR์ ์์ฑํ๋ ๋ณ๋์ Dockerfile.build
ํ์ผ์ด ์์ต๋๋ค.ํ์ง๋ง Dockerfile์ ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ scripts/build
docker build < Dockerfile.build
๋ฅผ ์ํํ ๋ค์ ํธ์คํธ ๋ณผ๋ฅจ w/ docker run -v ...
๋ฅผ ๋ง์ดํธํ์ฌ ๋น๋๋ฅผ ์คํํ๋ scripts/build
ํ์ผ์
๋๋ค. ๋์ docker build -t foobar/builder -f Dockerfile.build
, docker run foobar/builder
, docker build -t foobar/runtime
, docker run foobar/runtime
ํ๊ณ ๋ Dockerfile์์ ๋ชจ๋ ADD ๋ช
๋ น์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.๊ทธ๋์ ๋ด๊ฐ ์ ๋ง๋ก ์ํ๋ ๊ฒ์ "Dockerfile ์์น/์ด๋ฆ"์์ "๋น๋ ์ปจํ ์คํธ"์ ๊ฐ๋ ์ ๋ถ๋ฆฌํ ์ ์๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ๊ฒ ํ ์ ์๋ ์ ์ฌ์ ์ธ ๋ฐฉ๋ฒ์ ๋ง์ด ์์ง๋ง ๋์๊ฒ๋ ๋น๊ต์ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
@cap10morgan ํน์ ๊ทํ์ ์ 1์ด๋ ์๋ ค์ค ์ ์์ต๋๊น? ๊ทธ๋์ ๋๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋์ง ํ์ธํ๊ณ ๋ ์ ์์ต๋๋ค.
@shykes https://github.com/shykes ์ด๊ฒ์ด ๋ฐ๋ก ์ด์์ฑ์ ๊ฟ์ด ์๋๋๊น?
์ด๋ฏธ์ง ์ธ๋ฑ์ค๋ ๋ฌด์์ ์ํ ๊ฒ์
๋๊น? ๋น๋ ํ๊ฒฝ์ด ํ์ํ ์ด์
ํด๋์ฉ์ผ๋ก๋?
์ผ๋ถ ๋น๋ ํ๋ก์ธ์ค์๋ ๋ฐ๋๋ผ๋ก ๊ฐ๋ฅํ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ด ํ์ํฉ๋๋ค.
๋์ปคํ์ผ. ๋ํ ์ปจํ
์คํธ๋น ํ๋์ Dockerfile์ ์ ์ฉํฉ๋๋ค(์ด๋
์ด ์์ฒญ์ ์์ ์ ๋ชฉํ๋ก ํจ)์ด ๋งค์ฐ ์ ํ์ ์
๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก ์ฐ๋ฆฌ ํ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฐ๋ฆฌ์ ์ค์ ์์ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ
๋์ผํ "์ปจํ
์คํธ"์ ์ด๋ฏธ์ง. --file
์ต์
์ ์ถ๊ฐํ๋ฉด
์ฐ๋ฆฌ๊ฐ ์ ๋ง๋ก ํ๊ณ ์ถ์ ๊ฒ - foo.docker
์ bar.docker
์ฐ๋ฆฌ์ ์ ์ฅ์ ๋ฃจํธ์. ๋์ ๋ณต์ฌํ bash ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
์ปจํ
์คํธ๋ฅผ ์ค์ ํ๊ณ ์ด๋ฆ์ ๋ฐ๊พธ๊ธฐ ์ํด ์์ ์์น์ ์๋ง์ ํ์ผ
๋ช
๋ช
๋ ๋์ปค ํ์ผ์ Dockerfile
๋ง๋ฒ์ฒ๋ผ docker build
๋ฃ์ ์ ์์ต๋๋ค.
์ผํ๋ค.
๋์๊ฒ ์ด๋ฌํ ๊ณ ๋ฆฌ๋ ์ ๋นํ ์ด์ ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ ๋๊ตฐ๊ฐ๊ฐ ์ํ๋ ๊ฒฝ์ฐ
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ค๋ฉด ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ์์
์ ์๋ฃํด์ผ ํฉ๋๋ค.
์ด ์ ํ์ ๊ณ ์ํจ์ผ๋ก์จ ํผํ ์ ์๋ค๊ณ ์๊ฐํ๋ ์ ํํ ๊ฒ.
2014๋ 4์ 7์ผ ์์์ผ ์คํ 4์ 23๋ถ์ Solomon Hykes [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์ต๋๋ค.
@cap10morgan https://github.com/cap10morgan ์ง์ ํ ์ ์๋ ๊ธฐํ
๋๋ ๋น์ ์ ์ 1, ๋๋ ๊ทธ๊ฒ์ ๊ทผ์ฌํ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋์ ๋๋ ๋ ์ ์๋ค
์ฐ๋ฆฌ๊ฐ ๊ฐ์ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ Gi tHubhttps://github.com/dotcloud/docker/issues/2112#issuecomment -39778691์์ ํ์ธํ์ธ์.
.
@shykes ์ด๊ฒ์ด '๊ณ ์ ๋์ง ์์' ๊ฒ์ฒ๋ผ
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ํ ์คํธ์ ํ๋ก๋์ ์ด๋ฏธ์ง์ ๋ค๋ฅธ ์๊ตฌ ์ฌํญ์ด ์๋ ๋์ปค๋ก ๋น๋ํ๋ ค๋ ์ฑ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ์ด๊ฒ์ด ๊ฝค ์ผ๋ฐ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ์ .dockerignore ๋ฌธ์ (https://github.com/dotcloud/docker/pull/3452)(๋ด ์ ์ฒด .git ๋๋ ํ ๋ฆฌ๋ฅผ ๋น๋ ์ปจํ ์คํธ์ ๋ณต์ฌ)๋ ๋์ปค๋ฅผ ์ฌ์ฉํด ๋ณผ ๋ ์ฒ์ ๋ถ๋ชํ๋ ๋ค์ ์ค์ํ ๊ณ ์ถฉ์ ๋๋ค. ์ง๋ ๋ฉฐ์น ๋์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ๋ํ ์ ๋ณด๊ฐ ์์๊ณ ๋์๊ฒ๋ ๋ณ ์๊ฐ์ด ์์ด ๋ณด์ด์ง๋ง ์ด๋ฌํ ๋ฌธ์ ์ ๋ํ ๋ฐ๋ฐ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ๋ ํ์ํ๋ค๋ ์ ์์ +1 - ์ฌ๋ฌ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ๊ฐ๋ฐ ์ค์ธ ๋จ์ผ ์ฝ๋ ๊ธฐ๋ฐ์ด ์์ต๋๋ค. ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋์ ์ด๋ฏธ์ง์๋ services/base/* ๋ฐ services/fooservice/* ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. services/base/* ๋ฐ services/barservices/* ๋ฐ staticfiles/*๋ฅผ ํฌํจํ๋ ๋ค๋ฅธ ์ด๋ฏธ์ง.
Docker๊ฐ ํด๋น ํด๋๋ฅผ ์ปจํ
์คํธ๋ก ์ฒ๋ฆฌํ๊ณ ํด๋ ๊ตฌ์กฐ์์ ์์์ ์๋ ํญ๋ชฉ์ ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ Dockerfile์ ์๋น์ค ํด๋ ์์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ๋ ๊ฐ์ Dockerfile์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฏ๋ก ๋ฃจํธ์ ๋ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ์ ์ผํ ์๋ฃจ์
์ Dockerfile์ ์๋น์ค ํด๋์ ๋ฐฐ์นํ ๋ค์ ์ ํํ Dockerfile์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ์ถ๊ฐํ ๊ฒฝ๋ก(๋ชจ๋ ํ๋ก์ ํธ ๋ฃจํธ์ ๋ํด ์ง์ ๋จ)๋ฅผ ๊ฒฐ์ ํ ๋ค์ ์ ํด๋์ ๋ณต์ฌํ๋ ๊ฒ์
๋๋ค. ์์ ํด๋์์ ์ ํํ Dockerfile์ ์ ํด๋์ ๋ฃจํธ์ ๋ณต์ฌํ๊ณ ๋ง์ง๋ง์ผ๋ก "docker build tempfolder"๋ฅผ ์คํํฉ๋๋ค. ๊ทธ๊ฒ ์ ๋ง ํ์ํ๊ฐ์?
Dockerfile์ด ์ด๋์ ์๊ณ ์ปจํ
์คํธ๊ฐ ์ด๋์ ์๋์ง ๋ณ๋๋ก "๋์ปค ๋น๋"๋ผ๊ณ ๋งํ ์ ์๋ค๋ฉด ํจ์ฌ ๊ฐ๋จํ์ ๊ฒ์
๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด .. ์ด๋ค ์ข ๋ฅ์ ์์ ์ฌํญ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
+1, ์ด ์ ํ ์ฌํญ์ ์ฝ๋ฉํ๋ ๊ฒ์ ํฐ ๊ณ ํต์ ๋๋ค.
๋น๋ ์ปจํ ์คํธ์ ๋ณ๋๋ก Dockerfile ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ -f ํ๋๊ทธ์ ๊ฒฝ์ฐ +1
Docker๋ ํ๋ฅญํ ๋๊ตฌ์ด์ง๋ง ์ปจํ ์คํธ์ ํน์ Dockerfile์ ๊ธด๋ฐํ ๊ฒฐํฉ์ ํ์คํ Docker ํ์ ์ฝ๊ฐ ์ค์ผ์ํต๋๋ค. ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ํญ์ '์ปจํ ์ด๋/ํ์ ์์คํ ' ๊ตฌ์กฐ๋ฅผ ์ ํํ ๋ฐ์ํ๋ ๊ฒ์ ์๋๋๋ค.
๊ณ ์น๊ธฐ ์ผ๋ง๋ ํ๋ค๊น์? ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ํ ๋ช ๊ฐ์ง PR์ด ์์์ง๋ง ๋ฌด์๋์์ต๋๋ค.
๊ด๋ จ๋ ๊ฐ๋จํ ์ถ๊ฐ ์ฌํญ์ ์ปจํ ์คํธ์ ์ถ๊ฐํ๊ณ ์ถ์ง ์์ ํญ๋ชฉ์ ๋ํ ๋ฌด์ ํ์ผ์ ๊ฐ๋ ๊ฒ์ ๋๋ค. ์, .git ...
์ด๋ก ์ธํด ์ค์ ๋ก ์ง๊ธ์ Docker๋ฅผ ๊ฑด๋๋ฐ๊ณ Vagrant + Ansible๋ก ๋์๊ฐ ์ ์์ต๋๋ค. ๋ฉ์ง.
@davber .dockerignore๋ -> #6579์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค, ๊ธฐ์ฌ ๊ด๋ฆฌ๋ ์ง๊ธ ์ฝ๊ฐ ๊ณ ํต์ค๋ฝ๊ณ ์ง๊ธ๊น์ง docker์์ ๋ณด๊ธฐ ๋๋ฌธ ๋๋ดํ ๊ฒ ์ค ํ๋์ ๋๋ค. ๋๋ ๊ทธ๋ค์ด ๋จ์ง ์กฐ๊ธ ํฌ๋ง์ ์ผ๋ก ์๋๋์๋ค๊ณ ์๊ฐํฉ๋๋ค.
Docker ํ, ์ด๋ป๊ฒ ์ฌ๋๋ค์ด ์ด์ ๊ฐ์ ๋ด์ฉ์ ๊ฒํ ํ๊ณ ๋ฐ์ ์ ์์ต๋๊น? ์ด๊ฒ์ด ์ค์ ๋ก ์ค์ ๋ก ๋์ ์ด์ ์ ํ๋ก์ ํธ์์ ์ด ๋ฌธ์ ๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ํํ ์๊ฐ์ด ์๋ค๋ฉด ๋ฃ๊ณ ์ถ์ง๋ง ์ค๋ช ํ ์ ์๋ ๊ฐ๋จํ ๋ฌธ์ ์ ํด๊ฒฐํด์ผ ํ ๊ฐ๋จํ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ ๋๋ค.
/cc @shykes @creack @crosbymichael @vieux
-f ํ๋๊ทธ์ ๊ฒฝ์ฐ +1์ ๋๋ค. ๋ํ ๋น๋ ์ค์ ์ ์ฌ์ ์ํ๋ DOCKERFILE ํ๊ฒฝ ๋ณ์์ ๋๋ค.
@jakehow ๋ค, ํ์คํ ์๋๋นํ๋ ์์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๋ฉ์ธํ ์ด๋์ ๋ํด ์ ์ด๋ 1,000๋ช ์ ์ฌ๋๋ค์ด ์ ๊ทน์ ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์์ฒญํ๊ณ ์์ง ์๋ฃ๋์ง ์์ ์ด์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ์๊ตฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋ง ์ต์ ์ ๋คํ๊ณ ์์ผ๋ฉฐ #docker ๋ฐ #docker-dev irc ์ฑ๋์ ๋ฐฉ๋ฌธํ๋ฉด Firehose๋ฅผ ์ง์ ๋ชฉ๊ฒฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ Dockerfile๊ณผ ์์ค ๋๋ ํ ๋ฆฌ์ 1-1 ๋งคํ์ ์ ์งํ๋ ๊ฒ์ด ๋ ๋์ ์ด์ ์ ๋ํ ๋ช ํํ ๋ต๋ณ์ด ์์ต๋๋ค. ๋ค์ ํ ๋ฒ ๋ฐ๋ณตํ๊ฒ ์ต๋๋ค. ๋์ปค ๋น๋์ ์์ฒด ์ค๋ช ์์ฑ์ ์ ์งํ๋ ค๊ณ ํฉ๋๋ค. _๋์ญ ์ธ์ ๋ค๋ฅธ ์ ๋ณด ์์ด_ ์์ค ์ฝ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์ด ๋๋ ํ ๋ฆฌ์์ ์ ์คํธ๋ฆผ ๊ฐ๋ฐ์์ ์ฌ์๊ณผ ์ ํํ ์ผ์นํ๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์๋ค๋ ์ฌ์ค์ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ Docker์ ์ฃผ์ ์ฐจ๋ณํ ์์์ ๋๋ค.
๋ฌผ๋ก , ๋๋ ํ ๋ฆฌ X์ Dockerfile Y๋ฅผ ์ฆ์์์ ๋์ ์ผ๋ก ๊ฒฐํฉํ ์ ์๋ค๋ ๊ฒ์ ์ฝ๊ฐ ํธ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ด๋ฆฌ์์ ์ผ, ์ฆ ๋น๋์ ์์ฒด ์ค๋ช ์ ์ธ ํน์ฑ์ ๊นจ๋จ๋ฆฌ๋ ์ผ์ ๋๋ฌด ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์์ฒญ๋๊ฒ ๊ฐ๋ํ ํธ๋ ์ด๋์คํ์ฒ๋ผ ๋ณด์ ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
"1 ์์ค ๋ฆฌํฌ์งํ ๋ฆฌ, ์ฌ๋ฌ ์ด๋ฏธ์ง"์ ์์ ๊ดํด์๋ ์, ํ์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฒ์ ๋จ์ผ ์์ค ๋๋ ํ ๋ฆฌ๊ฐ ์ฌ๋ฌ ๋น๋ ๋์์ ์ ์ํ๊ธฐ ์ํ Docker ํ์ค ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ ๋ค์ค ๋ถ๋ถ Dockerfile์ ์ฌ์ฉํ๊ฑฐ๋ _์ด Dockerfile์ ๋ชจํธํ์ง ์์ ๋ฐฉ์์ผ๋ก ๋์ดํ๊ณ ์ ํํ ์ ์๋๋ก ํ๋ ์ ์ ์๋ ํ์ผ ์ด๋ฆ ๊ท์น์ด ์๋ ํ ๋ค์ค Dockerfile๋ก ์ํํ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ณํฉํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์์ ๊ฐ์ด ์ฒ์ ๊ธฐ์ฌํ๋ ์ฌ๋๋ค์ ๊ธฐ๊บผ์ด ๋์ธ ๊ฒ์ ๋๋ค. IRC์ ์์ ์ธ์ฌ๋ฅผ ํ๋ฉด ์์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
@davber ๋๋ Vagrant๊ฐ ํ๋ก์ ํธ๋น 1๊ฐ์ ์ค๋ช ํ์ผ์ ๋ํด ๋์ผํ ์ ํ์ ๊ฐ์ง๊ณ ์๋ค๋ ์ธ์์ ๋ฐ์์ต๋๋ค(์๋ง๋ ๋น์ทํ ์ด์ ๋ก). Vagrant๋ก ๋ค์ ์ ํํ๋ฉด ๋ฌธ์ ๊ฐ ์ ํํ ์ด๋ป๊ฒ ํด๊ฒฐ๋ฉ๋๊น?
@gabrtv ๋ค์ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๊ฐ์ ธ์ค์๊ฒ ์ต๋๊น? ์ ์ ์ ์ธ ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$ ls | grep Dockerfile
Dockerfile
db.Dockerfile
frontend-prod.Dockerfile
frontend-dev.Dockerfile
$ docker build -t shykes/myapp .
Successfully built shykes/myapp/db
Successfully built shykes/myapp/frontend-dev
Successfully built shykes/myapp/frontend-prod
Successfully built shykes/myapp
$ docker build -t shykes/myapp2 --only frontend-dev .
Successfully built shykes/myapp2/frontend-dev
๊ทธ ์ ์์ ์ฐ๋ฆฌ์๊ฒ ์ ์๋ํ ๊ฒ์ด๋ฉฐ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด ๋ค๋ฅธ ๋ฌธ์ ๋ ํด๊ฒฐํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
@shykes ๋๋ Dockerfile ํ์์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํค๋ ๊ฒ์ด ํ๋์ Dockerfile์ ์ ์งํ๊ธฐ ์ํ ๊ฐ์น ์๋ ์ ์ถฉ์์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด makefiles - ํ๋ก์ ํธ์ 'Makefile'์ด ์๋ ๊ฒ๋ณด๋ค ๋ ์ผ๋ฐ์ ์ด์ง๋ง make๋ฅผ ์ฌ์ฉํ๋ฉด '-f'๋ก ๋ค๋ฅธ makefile์ ์ง์ ํ ์๋ ์์ต๋๋ค.
๋ํ ์์ค ํด๋์ ์ด๋ฏธ์ง ๊ฐ์ 1:1 ๋งคํ์ ์ฌ์ฉ์๊ฐ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ ์ ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ต์, ๋ฐ๋ผ์ ๋ ์์ ์ด๋ฏธ์ง.
"๊ทธ๋์ ๋ด ์ง๋ฌธ์: docker build๋ก ๋ฐ๋ณต์ ์ผ๋ก ๋น๋ํ ์ ์๋ ๋ง์ ์์ค ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ํ์ด ์์ง ์์ต๋๊น?"
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ด๋ฏธ ์ฌ์ค์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ถ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๋จ์ผ ๋น๋ ๋ฐฉ๋ฒ์ด ์ค์ฉ์ ์ด์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ Dockerfile ๊ตฌ๋ฌธ์ ๋ง์ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ํ์ฉํ์ง ์์ต๋๋ค. ...).
๋๋ ๋ํ --only ์ ์์ ํนํ ์ข์ํ์ง ์์ต๋๋ค. ์ฌ๋๋ค์ด ๋น๋ํ ๋ /want/ ๋ชจ๋ ๊ฒ์ด ์๋๋ผ ํน์ ์ปจํ
์คํธ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. docker ๋น๋๋ฅผ ์คํํ ๋ /only/ Dockerfile
๊ฐ ์คํ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ํ ๊ตฌ์ถํ ์ ์๋ ๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ์ ์ํฉ๋๋ค.
๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ค์ ์์ต๋๋ค.
Dockerfile ํ์ดํ(cat Dockerfile | docker build -) ์์
์ ๋์จํ๊ฒ ํฉ๋๋ค.
ADD ๋ฐ CP์ฉ ๋๋ ํ ๋ฆฌ.
๋์ปค ๋น๋์ฉ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์์ค ํด๋ ๋ด์ฉ์ด ์๋ ์์น๋ฅผ ์ง์ ํ์๊ฒ ์ต๋๊น?
cat Dockerfile | docker build --cwd=~/my_docker_data_files -
์ด ์ ์์์ --cwd
ํ๋๊ทธ๋ ADD ๋ฐ CP์ ๋ํ ๊ธฐ๋ณธ ํด๋๋ฅผ ์ง์ ํฉ๋๋ค.
๋ช
๋ น.
2014-06-29 19:42 GMT+10:00 Peter Braden [email protected] :
๋น์ ์ "๊ทธ๋์ ๋ด ์ง๋ฌธ์: ์ฐ๋ฆฌ๊ฐ ๋ง์ ์์ค๋ฅผ ๊ฐ์ง ์ํ์ ๊ฐ์ํ์ง ๋ง๋ผ๋ ๊ฒ์ ๋๋ค.
docker build๋ก ๋ฐ๋ณต์ ์ผ๋ก ๊ตฌ์ถํ ์ ์๋ ์ ์ฅ์"๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ด๋ฏธ ์ฌ์ค์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ถ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์
๋จ์ผ ๋น๋ ๋ฐฉ๋ฒ์ ์ค์ฉ์ ์ด์ง ์์ผ๋ฉฐ Dockerfile ๊ตฌ๋ฌธ์
๋ง์ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ํ์ฉํฉ๋๋ค(์ค๊ณ์์ผ๋ก
๋ณ๊ฒฝํ๋ ๊ฒ...).๋๋ ๋ํ --only ์ ์์ ํนํ ์ข์ํ์ง ์์ต๋๋ค. ๋ด๊ฐ ์๊ฐํ๋ ๊ธฐ๋ณธ
์ฌ๋๋ค์ด ๊ตฌ์ถํ ๋ /์ํ๋/์ ํน์ ์ปจํ ์คํธ๊ฐ ๊ตฌ์ถ๋๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์ ๋ถ๋ ์๋๋๋ค - ๋์ปค ๋น๋๋ฅผ ์คํํ ๋ /only/ Dockerfile์ด
์คํ๋ฉ๋๋ค. ํ์ง๋ง ๋๋ ๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ์ ์ํฉ๋๋ค.
์ธ์์ง.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotcloud/docker/issues/2112#issuecomment -47449994.
@llonchj๋ ์ค์ ๋ก https://github.com/dotcloud/docker/pull/5715๋ฅผ ํด๊ฒฐํ๊ณ ์ด๋ฏธ ๋ง์คํฐ์ ๋ณํฉ๋์์ต๋๋ค.
@shykes๋ ํ์คํ ๋ค๋ฅธ ๋ค์ค ์ด๋ฏธ์ง PR์ ์ด๋ ค ์์ง๋ง #5715๋ฅผ ๋ณด๊ณ ์ด ํน์ PR์ด ๋ ์ด์ ๊ด๋ จ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
@peterbraden ์ ์๋ ์๊ฒฌ์ ๋ฐ๋ผ ...
ํ์ผ์ ์ถ๊ฐํ๊ณ ์ฌ๋ฌ dockerfile์ ๊ฐ์ง ์ ์๋๋ก [command redacted]๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@cap10morgan ๋น...
๊ทธ๋์ ๋ด๊ฐ ์ ๋ง๋ก ์ํ๋ ๊ฒ์ "Dockerfile ์์น/์ด๋ฆ"์์ "๋น๋ ์ปจํ ์คํธ"์ ๊ฐ๋ ์ ๋ถ๋ฆฌํ ์ ์๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ก #5715๊ฐ ํ๋ ์ผ ์๋๊ฐ์? ๋ด๊ฐ ์ดํดํ ๋๋ก:
$ cd myapp
$ ls Dockerfile
Dockerfile
$ docker build -t gabrtv/myimage
Successfully built gabrtv/myimage
$ ls subfolder/Dockerfile
Dockerfile
$ tar -C subfolder -c . | docker build -t gabrtv/myotherimage -
Successfully built gabrtv/myotherimage
๋๋ ์ด๊ฒ์ด repo ๋ฃจํธ์์ ๋ค์ค ์ด๋ฏธ์ง ๋น๋๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง(๋๋ ๋์ํ ๊ฒ์ ๋๋ค), ์ด ํน์ PR/๊ตฌํ์ด #5715๋ก ์ด์ ์ค๋จ๋ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
@gabrtv #5715๋ ํญ์ ์๋ํ๋ ๋จ์ผ ๋ช
๋ น์ ๊ฐ๋ @shykes ๊ธฐ์ค์ ๋ง์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. tar -C subfolder -c . | docker build -t gabrtv/myotherimage -
๋ ๋์๊ฒ ๋งค์ฐ ๋ช
ํํ์ง ์์ต๋๋ค.
๋ํ repo ๋ ์ด์์๊ณผ ๊ด๋ จํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์ฑ๊ฐ์ (๋ถ๋ด์ค๋ฝ์ง ์์ ๊ฒฝ์ฐ) ์ ์ฝ์ ๋ถ๊ณผํฉ๋๋ค. ๊ณ ์น ์๋ ์์ง๋ง "์, ์ ์ฒด ์ ์ฅ์๋ฅผ ์ฌ๊ตฌ์ฑํด์ผ ํฉ๋๋ค"๋ ์์ฌ๊ฐ Docker๋ก ์ ํํ๋๋ก ์ค๋ํ๋ ๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก @shykes ์ ๊ฐ์ฅ ์ต๊ทผ ์ ์์ ์์ฃผ ์ข์ํฉ๋๋ค. ์ ์ฌ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ .dockerfile(๋จ์ง .docker๊ฐ ์๋ ์ด์ ๊ฐ ๋ฌด์์ ๋๊น?) ํ์ผ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋น๋๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด๋ค ์ผ์ด ์์ด๋ ํ๋์ ๋ช ๋ น์ผ๋ก ์ฝ๊ฒ ์์ํ๊ณ ์คํํ ์ ์์ผ๋ฉฐ ๋์ค์ ์ต์ ํํ ์ ์์ต๋๋ค.
๊ตฌํ์ ๋ฐ๋ผ ๋ชจ๋ ์ด๋ฏธ์ง์ ๋ํด ๋น๋ ์ปจํ ์คํธ๋ฅผ ํ ๋ฒ๋ง ์ ๋ก๋ํ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋น์ฉ์ ์ค์ผ ์ ์์ต๋๋ค. .dockerignore๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น๋ ์ปจํ ์คํธ๊ฐ ์๋ฐฑ ๋ฉ๊ฐ๋ฐ์ดํธ์ด๊ณ ์ปจํ ์คํธ๊ฐ ์ ๋ก๋๋ ๋๊น์ง ๊ฝค ๊ธฐ๋ค๋ ค์ผ ํ๋ฏ๋ก ์ด๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
@rattrayalex ๋ ์ ๋ฅผ ๋ฏฟ์ผ์ธ์. ์ ๋ "ํญ์ ์๋ํ ๋จ์ผ ๋ช ๋ น์ ๊ฐ๋ ๊ฒ"์ด๋ผ๋ ๋ชฉํ์ ๋์ํฉ๋๋ค. ์ฝ๋๋ฅผ ์์ฑํ๊ณ PR์ ์ ์ถํ๊ฒ ๋ ์ข์ ๊ธฐํ๊ฐ ์์ต๋๋ค. :๋์ง:
์ ์์ ์ ํ๋ก์ ํธ ์กฐ์ง์ ๊ด์ ์์ Allow specifying of a dockerfile as a path, not piping in
๋ผ๋ ์ ๋ชฉ์ ๊ธฐ๋ฐํ ๋ฌธ์ ๊ฐ ์๋๋ผ ๋ค๋ฅธ ๊ณณ์์ ๋
ผ์ํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค.
@llonchj ์ธ์ฉ...
๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด ์ฌ๊ธฐ์ ๋ฌธ์ ๋ Dockerfile(cat Dockerfile | docker build -)์ ํ์ดํํ ๋ ADD ๋ฐ CP์ ๋ํ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋์จํ๊ฒ ํ๋ค๋ ์ฌ์ค์ ์์ต๋๋ค.
๋ค์ ๋งํด์, docker build -t <image> -f <path-to-dockerfile>
์ ๋ํด ๊ด์ฐฎ๋ค๋ฉด @shykes ์ ์์ ์ํ PR์ ํจ๊ป ๋ฃ์ ์ ์์ ๋๊น์ง ๊ธฐ๋ฅ์ ์ผ๋ก ๋๋ฑํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก tar -C <path-to-context> -c . | docker build -t <image> -
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋ซ๊ณ ๋ค๋ฅธ ๊ณณ์์ ์๋ก์ด ํ ๋ก ์ ์์ํ ๊ฒ์ ์ ์ํฉ๋๋ค(๋ฉ์ผ๋ง ๋ฆฌ์คํธ? ์๋ก์ด ์ด์?).
์ค๋ ์ด ๋ฌธ์ ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@shykes ์ถ๋ก
@gabrtv ์ฌ๊ธฐ ์๋ ๊ฑฐ์ ๋ชจ๋ ๋ ผ์๊ฐ ํนํ ์ด ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ๋ฉฐ ๋ง์นจ๋ด ์ฌ๊ธฐ์์ ๋ ผ์๋๋ ๊ฒ์ ๋ณด๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ๋ฌธ์ ์ ์ ๋ชฉ๊ณผ ์ผ๋ถ '๋ฐ๊ฒฌ' ๊ฒ์๋ฌผ์ ์ฝ๊ฐ ๊ด๋ จ์ด ์์ ์ ์์ผ๋ฏ๋ก ์๋ก์ด ๋ฌธ์ ๋๋ ์ด ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ๋ ๊นจ๋ํ ์์์ PR์ด ์ข์ ๊ฒ์ ๋๋ค.
@shykes ์๊ฒฌ์ ์ ์์ ๋์๊ฒ ์๋ฃจ์ ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ฐธ์กฐ๋ฅผ ์ํด ๋ณผ ์ ์๊ฑฐ๋ ๋ณผ ์ ์๋ ์ด๋๊ฐ์์ ์ด์ ๋ํ ์ด์ ์์ ์ด ์ํ๋์์ต๋๊น?
"Dockerfile.frontend-prod"๊ฐ ๋ ์ข์ง ์์ ๋ชจ๋ Dockerfile์ด
๋๋ ํ ๋ฆฌ์์ ์์ฐ์ค๋ฝ๊ฒ ํจ๊ป ์ ๋ ฌ๋ฉ๋๊น?
์ฃ์กํฉ๋๋ค๋ง, ๊ทธ๊ฑด ์ด๋ฆฌ์์ ์ผ์ ๋๋ค. ๋ด ์ ์ฅ์๊ฐ 100๊ฐ์ ์๋น์ค๋ฅผ ๋น๋ํ๋ค๋ฉด ๋ฃจํธ์ 100๊ฐ์ Dockerfile์ ๊ฐ๊ณ ์ถ์ง ์์ต๋๋ค. (์์: dotCloud PAAS repo.)
100๊ฐ ์น์ ์ด ์๋ ๊ฑฐ๋ํ ๋จ์ผ Dockerfile๋ ์ํ์ง ์์ต๋๋ค.
100๊ฐ์ Dockerfile์ด ํ์ํ๊ณ ๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ๊ณ ์ถ์ต๋๋ค.
(์๋์, ๊ฑฐ์ ๋ชจ๋ ์๋น์ค๊ฐ ๊ฐ ์๋น์ค ๋๋ ํ ๋ฆฌ์ _์ธ๋ถ_์ ์๋ ๊ณตํต ์ฝ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ ์๋น์ค๋ฅผ ์์ฒด ๋๋ ํ ๋ฆฌ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.)
๋ค์ ๋งํ์ง๋ง, Dockerfile์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ์ถ๊ฐ ํ๋๊ทธ๊ฐ ์๋ ์ด์ (๊ธฐ๋ณธ๊ฐ์ Dockerfile
)๊ฐ ์ ๊ทธ๋ ๊ฒ ํฐ ๋ฌธ์ ์ธ์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค.
๋ํ ํ์ฌ ์ ์( <imagename>.Dockerfile
)์ ์๋ํ๋ ๋น๋์ ํ์ฌ ๋์์ธ๊ณผ ์ ํ ๋งคํ๋์ง ์์ต๋๋ค. ๋ด ๋น๋ ์์คํ
์ค ํ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์์๋๋ฉด ๊ณต๊ฒฉ์๊ฐ ๋ด ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ์ ์์ต๋๋ค...?
@jpetazzo ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ์ฌ๋๋ค์ฒ๋ผ ๋๋ ์๊ฒฌ ๋ถ์ผ์น๋ ํ์ํ์ง๋ง ๋ฐ๋ณด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ ์ซ์ดํฉ๋๋ค. ๋๋ฃ์ ์ง์ฑ์ ๋ชจ์ํ์ง ์๊ณ ์์ ์ ์ฃผ์ฅ์ ์ ์ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ์ญ์์ค. ๊ฐ์ฌ ํด์.
_๋ค์ ๋งํ์ง๋ง, Dockerfile์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์ถ๊ฐ ํ๋๊ทธ๋ฅผ ๊ฐ๋ ๊ฒ์ด ์ ๊ทธ๋ ๊ฒ ํฐ ๋ฌธ์ ์ธ์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค.
์์์ ๊ตฌ์ฒด์ ์ธ ์ฃผ์ฅ์ ํ์ต๋๋ค. ์์ ๋กญ๊ฒ ์ฝ๊ณ ๋ฐ๋ก ์ ์ ์ํ์ญ์์ค.
Re: ๋์กํจ. @gabrtv ๋ IRC์ ๋ํด ๋์ผํ ์ฐ๋ ค๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ฝ๊ฐ์ ํ ๋ก ํ์ ์ฐ๋ฆฌ๋ ์ด ๋์์ ์๊ฐํด ๋์ต๋๋ค.
$ ls Dockerfile Dockerfiles/*
Dockerfile
Dockerfiles/frontend-prod
Dockerfiles/frontend-dev
๊ฐ์ ์๊ฐ์ด์ง๋ง ๋ฃจํธ ์ ์ฅ์์ ์๋ ๊ฐ๋ณ ํ์ผ์ด ์ ์ต๋๋ค.
๋ํ ํ์ฌ ์ ์(
.Dockerfile)์ ์๋ํ๋ ๋น๋์ ํ์ฌ ๋์์ธ๊ณผ ์ ํ ๋งคํ๋์ง ์์ต๋๋ค. ๋ด ๋น๋ ์์คํ ์ค ํ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์์๋๋ฉด ๊ณต๊ฒฉ์๊ฐ ๋ด ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ์ ์์ต๋๋ค...?
์, ์ด์ ์ด๋ฆ์ด ์ด๋ป๊ฒ ๋ฉ๋๊น? ์ผ๋ฐ Dockerfile๊ณผ ํจ๊ป "abc"๋ผ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ "abc"๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ฑ๋ ์ด๋ฏธ์ง์ ๋ํด ์๋ฏธ๊ฐ ์์ต๋๋ค. "Dockerfile.abc" ๋ฐ "Dockerfile.zzz"๊ฐ ํฌํจ๋ "xyz" ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ๋น๋ ์ด๋ฆ์ "xyz-abc" ๋ฐ "xyz-zzz"๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ ๋น์ ๊ณผ ๋น์ทํ ์ํฉ์ ์์ต๋๋ค (๊ณตํต ๋ถ๋ถ์ด์๋ ์์ฒด ํ์ ํด๋์ ๋ง์ ์๋น์ค๊ฐ ์์). ๋น๋ ์๊ฐ์ Dockerfile์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ๋ช ์์ ์ธ ์ต์ ์ ๋ด ์๊ฐ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ง ๋ง ๋ค์๋ ๋ณผ ์ ์์ต๋๋ค. ๋ด๊ฐ ์ํ๋ ๊ฒ์ ์ป์ ์ ์๋๋ก "Dockerfile.*" ์ ์์ ์ด๋ฏธ ์ถ์๋ "tar ํ์ผ์ ์ปจํ ์คํธ๋ก" ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ - ๊ฐ ์๋น์ค์ ๋ฃจํธ dockerfiles๋ ๋น๋ ์ด๋ฏธ์ง(์ปดํ์ผ๋ฌ ๋ฐ ๊ธฐํ ํฌํจ)๋ฅผ ์์ฑํ๊ณ ์คํ๋๋ฉด ์ด๋ฏธ ์ปดํ์ผ๋ ์คํ ํ์ผ๊ณผ ๋ฐํ์ ์ข ์์ฑ๋ง ์๋ ์ด๋ฏธ์ง๋ฅผ ์ค๋ช ํ๋ ํ๋ก๋์ Dockerfile(์๋น์ค ํด๋ ์์ฒด์์ ๊ฐ์ ธ์ด)์ด ํฌํจ๋ ์ปจํ ์คํธ tar๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ฌ์ค ๋ด ๋น๋ ํ๊ฒฝ์ด ๋ชจ๋ ์๋น์ค์ ๋ํด ๊ฑฐ์ ๋์ผํ๊ณ ๋ฐํ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ์ฌ ์์ฑํ๋ ค๋ ์๋น์ค ๋ฆด๋ฆฌ์ค ์ปจํ ์คํธ tar๋ฅผ ์๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋จ์ผ ๋ฃจํธ Dockerfile๋ก ์ด๊ฒ์ ์์ฑํ๊ณ ์์ต๋๋ค.
@shykes ๊ธ์, ์ฐ๋ฆฌ๊ฐ Dockerfile/* ์ ๊ฐ์ง ์ ์๋ค๋ฉด ํ ๋จ๊ณ ๋ ๋์๊ฐ "docker build"๊ฐ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ ํด๋์์ "Dockerfile.*"์ด๋ผ๋ ํ์ผ์ ์ฌ๊ท์ ์ผ๋ก ๊ฒ์ํ๋๋ก ํ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ปจํ ์คํธ์์ ๋ชจ๋ ์คํํ์๊ฒ ์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ if์ ์๋ ๋์ "-f"์ ๊ฐ์ด ๊ทธ ์ค ํ๋๋ฅผ ๊ตฌ์ถํ ์ ์๋ ์ต์ ์ ์ ๊ณตํฉ๋๊น? :)
... ๋ฐ๋ณด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ ์ซ์ดํฉ๋๋ค
๋๋ "๋ฐ๋ณด"๊ฐ ๋ถ์พํ๊ฒ ๋๊ปด์ง ์ ์๋ค๋ ๊ฒ์ ๋ชฐ๋์ต๋๋ค. ๋๋ ๋จ์ง "์ํฌ๋ฅธ"์ ์๋ฏธํ์ผ๋ฉฐ, ๋ฐ๋ผ์ ๋จ์ด๋ฅผ ์ค์ฉํ ๊ฒ์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
๊ทํ์ ๊ตฌ์ฒด์ ์ธ ์ฃผ์ฅ์ "์ฌ๋๋ค์ด Dockerfile์ ์์์ ์ฅ์์ ๋ฐฐ์นํ๊ณ ๊ผญ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ ๋ -f
์ฒด๊ณ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค"์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ง๋์? ์ด ๊ฒฝ์ฐ ์ ์ฅ์ ์๋จ์ ํ๋์ Dockerfile์ ์ง์ ํ๊ณ ๋ค๋ฅธ Dockerfile์ ๋์ดํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค. ํด๋น ํ์ผ์ด ์์ผ๋ฉด ๋น๋๋ ์๋์ ๊ฑฐ๋ถ(๋๋ ๊ฒฝ๊ณ ๋ฐํ)ํ ์ ์์ผ๋ฉฐ, ํ๋์ Dockerfile๋ง ๋์ดํ๋ ๊ฒฝ์ฐ ๋น๋๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. -v
๋ฐ -p
์ ๋ณํํ๋ ๊ฒ์ ์ ์ ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@aigarius ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ฐ ํ์ Dockerfile์ ์์ ์ด๋ฏธ์ง์ ๋งคํํ๋ ๋ฐฉ๋ฒ์ด ๋ ๋ช
ํํ ๊ฒ์
๋๋ค. ./Dockerfile.*
๋ฐ ./Dockerfiles/*
์ ์ฅ์ ์ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋จ์ผ ๋ค์์คํ์ด์ค์ ๋งคํ๋๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋๋ก ./foo/Dockerfile.db
์ ./bar/Dockerfile.db
๊ฐ ์๊ณ docker build -t shykes/myapp .
๊ฐ ์๋ ๊ฒฝ์ฐ shykes/myapp/db
๋ฌด์์
๋๊น?
์ด๋ค ๊ฒ์ด shykes/myapp/db๋ผ๊ณ ๋ถ๋ฅผ๊น์?
์ด๋ ๊ฒ๋ ์๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค์์๋ Dockerfile์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ด๋ฆ์ผ๋ก ์ธ์ฝ๋ฉํ๋ฏ๋ก "shykes/myapp/bar/db" ๋ฐ "shykes/myapp/foo/db"๊ฐ ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ถํธํ ์ ๋๋ก Java ๋ค์์คํ์ด์ค์ ๊ฐ๊น์์ง์ง๋ง ๊ทธ๊ฒ์ด ์ข์์ง ๋์์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋งก๊ธธ ๊ฒ์ ๋๋ค.
@shykes : Vagrant์ ๊ด๋ จํ์ฌ ์ ์ ๋ค๋ฅธ ๋ช๋ช ์ฌ๋๋ค์ Docker์ ์ผ๋ถ ๊ฒน์น๋ ๊ธฐ๋ฅ์ Vagrant๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ํ์ฌ ๋ค์ค ๋จธ์ ๋น๋(Vagrant์์ ๋ค์ค ๋จธ์ ์ ์์ ํจ๊ป ์ํ)๊ฐ Dockerfile์ ์ฌ์ฉํ ๋ ๋ ์ด์ํด์ง์ง ์๋๋ค๋ ํ์ ์ด ํ์ํฉ๋๋ค. ๋ฌธ์ ๋ "์ปจํ ์คํธ"๊ฐ Vagrant์์ ํจ์ฌ ๋ ์ ์ฐํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ณต์ ๋๋ ํ ๋ฆฌ๋ฅผ ํตํด ๋ชจ๋ ์์น์์ ์ปจํ ์คํธ๋ฅผ ์ฆ์์์ ๊ฐ์ ธ์ฌ ์ ์๊ณ ์ธ์ด๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฏ๋ก ํ๋์ ์๋น์ค(๋๋ ๊ธฐ๊ณ)๋ฅผ ๊ตฌ์ถํ๋ ค๋ ๊ฒฝ์ฐ ๋๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ณ ๊ทธ๊ฒ์ '์ ํ/ํ๋ก๋น์ ๋'ํ ์ ์์ต๋๋ค. ๋๋ ๋งค์ผ ๊ทธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ด ์์คํ ์์ ๋ช ๊ฐ์ง ์๋น์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ํ๋ก๋น์ ๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑ์ฅํ๋ Vagrantfile์ ๋๋ฌด ์ง์ฆ์ด ๋๋ฉด ๊ฐ๋ณ ์๋น์ค๋ ์ธก๋ฉด์ ์ค๋ช ํ๋ ํ์ Vagrantfile์ ์ฝ๊ฒ '๋ก๋'ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ Dockerfile์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์ฒด์ ์ธ ์ ์๊ณผ ๊ด๋ จํ์ฌ ์, ๊ฐ๋ณ ์๋น์ค์ ๋ํ ๋ ผ๋ฆฌ๋ฅผ ๋๋ ์ ์์ต๋๋ค. ์์ฒญ๋. ๊ทธ๋ฌ๋ ๋๋ ์ข ์ข ํ๋์ ์๋น์ค๋ฅผ ๋ณ๋๋ก ๊ตฌ์ถํ๊ธฐ๋ฅผ ์ํ๊ฑฐ๋ ๊ตฌ์ถํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ํ๋์ ํน์ Dockerfile์ ์ง์ ํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค...
๋ฐ๋ผ์ ์ฌ๊ธฐ์ ๋ด ๋ฌธ์ ๋ ๋ ๊ฐ์ง์ ๋๋ค.
๋ค์ ๋งํ์ง๋ง, Docker๋ ์ฒ์ฌ์ ์ธ ์์ด๋์ด์ด์ ๋๊ตฌ์ ๋๋ค. ๊ทธ๋์ ์ ๋ ์ ์ ๊ฐ์ ์ฌ๋๋ค์ด ํน์ ์ข ๋ฅ์ ๊ธฐ๋ฅ์ด๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํด Vagrant๋ฅผ ํฌ๊ธฐํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์์์ ์ฒ ์ ํ๊ฒ ๋ค๋ฃฌ ๊ฒ์ ๋ฐ๋ณตํ๋ค๋ฉด ๋ฏธ์ํ์ง๋ง '-f' ์ต์ ์ ์ง์ํ๋ ๊ฒ๋ณด๋ค ์ด๋ค ์๋ฃจ์ ์ด ๋ ๋์์ง ์ ์ ์์ต๋๋ค. ์ฆ, ์ปจํ ์คํธ ๋ฃจํธ์ ์๋ Dockerfile์ ๋ํ ๋ฟ๋ฆฌ ๊น์ ์ข ์์ฑ์ผ๋ก ์ธํ ๋ชจ๋๋ก ๊ตฌํ ๋ฌธ์ ๋ก ์ธํด ์ด๋ ํ ๋จ์ ๋ ๋ณด์ด์ง ์์ต๋๋ค.
'-f' ์ต์ ์ ์ฌ์ฉํ๋ฉด ์์ Dockerfiles/ ์ ๊ทผ ๋ฐฉ์๊ณผ ๊ฐ์ด ์ํ๋ ๋๋ก ํ์ ๋๋ ํฐ๋ฆฌ์ ํ์ Dockerfile์ ํ์คํ ๊ตฌ์กฐํํ ์ ์์ต๋๋ค. ์, ์ ํํ ๋์์ ๋ชจ๋ฐฉํ๊ธฐ ์ํด ๊ฐ๋จํ ํ ์ค ๋ฐฐ์ ๊ฐ ํ์ํฉ๋๋ค...
๊ณต์ ์ ์ ์ฐ์ฑ ์ฌ์ด์ ๊ธด์ฅ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ณต์ ๊ฐ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ด๋ผ๋ฉด ์, ํ์ค dockerfile
๋ง๋ ๋ง์ด๋ค.
๊ณต์ ๊ฐ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ณต์ ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค
์ด๋ฏธ์ง๋ฅผ ํตํด.
๋ํ ๋ช
์์ ์ผ๋ก ๊ณต์ ํ ์ ์๋ ํ๋ก์ ํธ์ ๋์ปค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์
์ด๋ฌํ ๊ฒฝ์ฐ ์ ์ฐ์ฑ์ ์ฐ๋ฆฌ์๊ฒ ํจ์ฌ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์์ ๋ง์ด ๋ค๋ฆฐ๋ค.
์ค๋ ๋ any๋ ์ด ๋์ผํ ์์น์ ์์ต๋๋ค.
๋ชฉ์ ์ด ์ง์ ๋ -f ์ต์
์ ์ฐ๋ฆฌ์๊ฒ ํ์ํ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ํํธ,
๋น๋ ์ปจํ
์คํธ์ ๋ํ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
์ผํ๋ค.
2014๋
7์ 3์ผ ์คํ 6์ "David Bergman" [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์์์ ์ฒ ์ ํ๊ฒ ๋ค๋ฃฌ ๊ฒ์ ๋ฐ๋ณตํ๋ค๋ฉด ๋ฏธ์ํ์ง๋ง ๋๋ ๋ณด์ง ๋ชปํ๋ค.
์ด๋ค ์๋ฃจ์ ์ด '-f' ์ต์ ์ ์ง์ํ๋ ๊ฒ๋ณด๋ค ๋ซ๋ค. ์ฆ, ๋ชจ๋๋ก
์ ๋ํ ๋ฟ๋ฆฌ ๊น์ ์ข ์์ฑ์ผ๋ก ์ธํ ๊ตฌํ ๋ฌธ์
์ปจํ ์คํธ ๋ฃจํธ์ ์๋ Dockerfile, ๋๋ ์ด๋ค ๋จ์ ๋ ๋ณด์ง ๋ชปํ๋ค.
๊ทธ๊ฒ.'-f' ์ต์ ์ ์ฌ์ฉํ๋ฉด ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์คํ ๊ตฌ์กฐํํ ์ ์์ต๋๋ค.
๋ฐ Dockerfiles/์ ๊ฐ์ด ์ํ๋ ํ์ Dockerfiles/
์์ ์ ๊ทผํฉ๋๋ค. ์, ๊ทธ๋ฌ๋ฉด ๊ฐ๋จํ ํ ์ค ๋ฐฐ์ ๊ฐ ํ์ํฉ๋๋ค.
์ ํํ ํ๋์ ๋ชจ๋ฐฉ ...โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotcloud/docker/issues/2112#issuecomment -47989616.
-f
๋ ์ต์ํ์ "๋๋ผ์"์ผ๋ก ๊ฐ์ฅ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค๋ ๋ฐ ๋์ํ์ต๋๋ค(๊ฐ์ธ์ ์ผ๋ก ์ด๋ฌํ ํ๋๊ทธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด ์ค๋ ๋์ ์ค๊ธฐ ์ ์ ์๋ํ์ต๋๋ค).
-c
๋๋ ํ ๋ฆฌ๋ tar ์ค ํ๋๋ฅผ ์ถ๊ฐํ์ฌ ์ปจํ
์คํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ๋ ํ๋ฅญํ ์ถ๊ฐ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๊ท๋ชจ ๋น๋ ํ๋ก์ธ์ค์์ ์์ cd
๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ํ์ฌ์์.
๋ํ docker build -f foo/bar/Dockerfile -c foo/
์ง์นจ์ด ํฌํจ๋ README๋ ๋์๊ฒ ๋ถ์พ๊ฐ์ ์ฃผ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง ์์ต๋๋ค.
๋ํ docker build
๊ฐ Dockerfile
s๋ฅผ ์ฝ๊ฒ ๊ฒ์ํ ์ ์๋ค๋ ๋ฐ ๋์ํ์ต๋๋ค. ์ด๋ฐ ์์ผ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
-- README
-- foo/
---- Dockerfile
---- etc
-- bar/
---- Dockerfile
---- etc
---- subbar/
------ Dockerfile
-- context/
---- etc
๊ฐ๋ฅํ ๋ชจ๋ ์ด๋ฆ ์ถฉ๋( repo/bar/subbar
)์ ํผํ๊ณ ๊ธ์ก์ ์ถ๋ก ํ๊ธฐ ์ฝ๊ณ ๋ง์ ๊ฐ๋ฐ ์ปจํ
์คํธ์์ ์๋ฏธ๊ฐ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ชจ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ docker build
๋ง์ ์ปจํ
์คํธ๋ฅผ ๊ตฌ์ถ ํ ๊ฒ, ๊ทธ๋ฆฌ๊ณ docker build -f
๋ถํ์ํ ์๋ต ํ ์์๋, Dockerfile
์์ ๊ฐ์ฅ ์ปจํ
์คํธ.
-f
๊ฐ Docker๊ฐ ํฌํจ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ aa ํ์ผ์ธ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ docker build
๊ฐ ์คํ๋ ๋ ๋น๋๋์ง ์์ dockerfile์ ๊ฐ์ง ์ ์๋๋ก ๊ทธ๊ฒ๋ ์๋ํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ด ์์ค๋์ง ์๋๋ก ์ด์ @shykes ์์ IRC ํ ๋ก ์์ ๊ทธ๋ ์ด๊ฒ์ ๊ตฌํํ๋ ๋ค๋ฅธ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
์ฌ๋๋ค์ด ์ฌ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ:
#!/bin/bash
ln -s Dockerfile-dev Dockerfile
docker build -t image/name-dev:latest .
rm Dockerfile
@์ค์ดํฌ์ค ํ? ํน์ ์ค๊ณ ์๋ฃจ์ ์ ๋ํ ํต์ฌ ๊ฐ๋ฐ์ ์น์ธ์ด ์๋ ๊ฒฝ์ฐ ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฅผ ๊ตฌํํ๊ณ ๋์ด์ค๊ธฐ ์์ฒญ์ ํ ๊ฐ๋ฅ์ฑ์ด ํจ์ฌ ๋ ๋์ต๋๋ค.
-f ์๋ฃจ์ ์ +1, ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ด๋ก ์ ์์ฒด ์๋น์ค๋ฅผ ๋ฐฐํฌํด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ๊ทธ ์๋ฃจ์ ์ ์ฌ์น์ค๋ฝ๊ฒ ์ฌ๊ธฐ์ง ์์ต๋๋ค. ๋ด ํน์ ๋ฌธ์ ๋ ์ฌ๋ฌ ์๋ฆฌ ์ฑ ์ด ์๋ ์๋ฆฌ์ฌ ์ ์ฅ์๊ฐ ์๊ณ ๋ง์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ปจํ ์คํธ๋ฅผ ๋ฃจํธ์ ์ ์งํ๊ณ ํ์ ๋๋ ํ ๋ฆฌ์ ๋์ปค ํ์ผ์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ์ต์ ์ ๋๋ค.
"-f"๋ ์ด๋ฏธ ์ฃผ์ด์ง ์ด์ ๋ก ๊ตฌํ๋์ง ์์ ๊ฒ์ ๋๋ค.
๋น๋๊ฐ ํธ์คํธ ๊ฐ์ ์ ํํ ๋์ผํ๊ฒ ์๋ํด์ผ ํ๋ฉฐ ํธ์คํธ๊ฐ ํน์ ๋ฐฉ์์ผ๋ก ์ค์ ํ๋ ๋ฐ ์์กดํ๋ ๊ฒ(์ฆ, ์์์ ์์น์ Dockerfile์ด ์๊ณ ๋ค๋ฅธ ์์น์ ์ปจํ ์คํธ)์ด ์์ผ๋ฉด ์ด ๊ณ์ฝ์ด ๊นจ์ง๋๋ค.
๋๋ #7115๊ฐ ์๋ง๋ ์ด๊ฒ์ ๋ํ ์ ์ ํ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
#7204 ๋ ์๋๋ฐ, ์ด๊ฒ์ ์ด๊ฒ์ ๋ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ง์ ๋ถ๋ถ์๋ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
dockerfile์ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ ๊ฐ์ง ์ ์๋ ์๋ฃจ์
์ด ๋ชจ๋ ๋ง์์ ๋ค์ง ์์ต๋๋ค. ์ด๋ ์ชฝ๋ ๊ฐ๋จํด ๋ณด์ด์ง ์์ต๋๋ค. #7115๋ ์๋ฅผ ๋ค์ด ๋ด ํ๋ก์ ํธ ์ค ํ๋์์ 'ํ
์คํธ' ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ 'ํ๋ก๋ํธ' ์ด๋ฏธ์ง. #7204๋ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ง๋์น๊ฒ ๋ณต์กํ ์๋ฃจ์
์ฒ๋ผ ๋ณด์
๋๋ค. -f
๋ ๋น๋์ _configurability_๋ฅผ ํ์ฉํ์ง๋ง ๋ ์๋ฃจ์
๋ชจ๋ _sub_builds_๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
"๋น๋๊ฐ ํธ์คํธ ๊ฐ์ ์ ํํ ๋์ผํ๊ฒ ์๋ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค"์ ๋ํ ์ค๋ช ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ทธ๋ ๊ฒ ์ค์ํ ์์น์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๋ ๊ทธ๋๋ก, ์ด ์ ์ฒด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋์ปค ํ๊ฒฝ์ ์์ฑํ๊ธฐ ์ํด make
๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ ์ด๋ฏธ ํธ์คํธ ๊ฐ ์คํ ๋ช
๋ น์ ์๋ฐํ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
๋์๊ฒ -f
๋ ์ค์ฉ์ ์ธ ์๋ฃจ์
์ฒ๋ผ ๋ณด์ด์ง๋ง ์์ฉํ ์ ์๋ค๋ฉด dockerfile์ ์์ ํ ํ๋ก๊ทธ๋๋ฐ ๊ตฌ๋ฌธ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ ์๋ฃจ์
์ ์๊ฐํ ์ ์์ต๋๋ค.
๋น๋๊ฐ ํธ์คํธ ๊ฐ์ ์ ํํ ๋์ผํ๊ฒ ์๋ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
์ ๋ ์ด๊ฒ์ด ์ ์ค์ํ์ง ๋ ๋ฃ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ ํ์ ํ์ฌ
๋น๋ ํ๋ก์ธ์ค๋ฅผ ์คํฌ๋ฆฝํ
ํ๋๋ก ๊ฐ์ - ํผํ๋ ค๋ ์ ํํ ๊ฒ.
๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ด ํ์ ์์ด
๊ทธ๊ฒ์ ๊ตฌ์ถ. ํธ์คํธ ๊ฐ ๋ฐ๋ณต์ฑ์ ๋ฌ์ฑํ๋ ๊ฒ์ด ์๋๊ฐ์? ๋น๋๋ฅผ ํ๋ ์ด์
๋ํ ํธ์คํธ ๊ฐ ๋ฐ๋ณต ๊ฐ๋ฅํด์ผ ํฉ๋๊น?
2014๋
7์ 28์ผ ์์์ผ ์ค์ 10์ 43๋ถ, Peter Braden [email protected]
์ผ๋ค:
๋๋ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ 2๊ฐ์ง ์ ์๋ ์๋ฃจ์ ์ ๋ชจ๋ ์ซ์ดํฉ๋๋ค.
๋์ปค ํ์ผ. ์ด๋ ์ชฝ๋ ๊ฐ๋จํด ๋ณด์ด์ง ์์ต๋๋ค. #7115
https://github.com/docker/docker/issues/7115 ์ฌ์ ํ ๊ทธ๋ ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๋ฌ ์ ํ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ค๋ ์ ์ค ์ผ์ด์ค๋ฅผ ํด๊ฒฐํ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๋ด ํ๋ก์ ํธ ์ค ํ๋์์ ์ํํ๋ ๊ฒ์ฒ๋ผ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ์์
'ํ ์คํธ' ์ด๋ฏธ์ง์ 'ํ๋ก๋ํธ' ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค. #7204
https://github.com/docker/docker/pull/7204
๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ง๋์น๊ฒ ๋ณต์กํ ์๋ฃจ์ -f ํ์ฉ
_configurability_๋ ๋น๋์ ๋ํ ๋ฐ๋ฉด ์ด๋ฌํ ์๋ฃจ์ ์ ๋ชจ๋
_์๋ธ_๋น๋_."๋น๋๊ฐ ์๋ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค"์ ๋ํ ์ค๋ช ์ ์ํฉ๋๋ค.
ํธ์คํธ์์ ํธ์คํธ๋ก ์ ํํ ๋์ผํฉ๋๋ค." ์ด๊ฒ์ด ์ ๊ทธ๋ฌํ ํค์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์์น.๊ทธ๋๋ก, ๋๋ ๋์ปค ํ๊ฒฝ์ ์์ฑํ๊ธฐ ์ํด make๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ด ์ ์ฒด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด๋ฏธ ๊ทํ์
host-to-host run-the-same ๋ช ๋ น.๋์๊ฒ -f๋ ์ค์ฉ์ ์ธ ์๋ฃจ์ ์ฒ๋ผ ๋ณด์ด์ง๋ง ์์ฉํ ์ ์๋ค๋ฉด
๊ทธ๋ ๋ค๋ฉด ์๋ง๋ ์ฐ๋ฆฌ๋ ํ์ ์ ํฌํจํ์ง ์๋ ์๋ฃจ์ ์ ์๊ฐํ ์ ์์ต๋๋ค
dockerfile์ ์์ ํ ํ๋ก๊ทธ๋๋ฐ ๊ตฌ๋ฌธ์ผ๋ก ๋ณํํฉ๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/2112#issuecomment -50347483.
๋ด๊ฐ ์ดํดํ๋ ํ ํต์ฌ ์์ด๋์ด๋ git repo๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ณ Dockerfile์ด ์๋ ๊ฒฝ์ฐ "docker build -t mytag"๋ฅผ ์คํํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ ์์ ์์ ํ ์์ ๋น๋๋ฅผ ์ป์ผ์ญ์์ค. ์ฌ๊ธฐ์ ํต์ฌ์ ์ฌ๋๋ค์ด ์คํดํ๊ฑฐ๋ ์์ง ๋ชปํ ์ ์๋ ์ฌ์ฉ์ ์ ์ ๋น๋ ์ง์นจ์ด ์๋ค๋ ๊ฒ์
๋๋ค.
์ ์ถฉ์์ด ๋ ์ ์๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ฌ์ ์ ์๋ ํ์ ํ๊ทธ๋ก ๋น๋๋ ๋จ์ผ ์ปจํ
์คํธ์์ ์ฌ๋ฌ Docker ์ด๋ฏธ์ง๋ฅผ ์ ์ํ ๋ค์ ๊ฐ๋ฅํ ๋ง์ ์ด๋ฏธ์ง ์ค ํ๋๋ง ๋น๋ํ๋ ์ต์
์ ๊ฐ์ง ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ณตํต ๋น๋ ๊ตฌ๋ฌธ์ด ์ ์ง๋๋ ๋์์ ๋ค์ ๋ ๊ฐ์ง๊ฐ ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค. 1) ํ๋์ ์ปจํ
์คํธ์์ ๋ง์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค. 2) "๊ณ ๊ธ" ์ต์
์ผ๋ก ๊ทธ ์ค ํ๋๋ง ์์ฑํ๋๋ก ์ ํํฉ๋๋ค.
์ ์๋ ๊ตฌ๋ฌธ์ ์์ ๋ด ์๊ฒฌ์ ์ค๋ช
๋์ด ์์ต๋๋ค - https://github.com/docker/docker/issues/2112#issuecomment -48015917
@algarius ๊ฐ์ฌํฉ๋๋ค. ์ด ์์ ์์ _INCLUDE_ ๊ตฌ๋ฌธ์ ๋ํ ์๋ก์ด ์ค๊ณ ์ ์์ ์ด์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์์ธ ์ ์์ ์๋ #6802 ๋๋ #6805๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์งํ ๋งํด์, ๋น๋๋ ์ด์ ์ค์ ๋ก ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
๋ด Dockerfile์ RUN apt-get update && apt-get install build-essentials ruby
python whatever
๊ฐ ์์ผ๋ฉด ์ด๋ฏธ
๋ด๊ฐ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ๋ ์์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ "์ต์ "์ธ ๊ฒ์ด ๋ฌด์์ด๋ ์๊ด์์ต๋๋ค. ๋ง์ฝ์
์ผ์ฃผ์ผ ํ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ฉด ๋ค๋ฅธ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ด๊ฐ ๊ฐ์ง ๊ฒ๋ค์ ๋ํ ์์กด์ฑ.
@codeaholics ๊ทธ๋ฌ๋ ๋ฒ์ ์ ํ๊น ํ์ง ์์ ๊ฒ์ ๋น์ ์๊ฒ
์๋ง ๊ณต์ ํ ๋๊ธ
@codeaholics ๋น๋์ ๋ฐ๋ณต์ฑ์ด ์๋ฒฝํ์ง ์๋ค๋ ๊ฒ์ด ๋ง์ต๋๋ค. ๋น๋ก ๋ฒ์ ๊ณ ์ ๊ณผ ๊ฐ์ ์ ์ด ์ต์ ์ด ์๊ณ ๋ ๋ง์ ๊ฒ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ด๋ ๋น๋์๋ ํญ์ ๋์ผํ _์ง์ ์ _์ด ์์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ํฅํ ๋ ๋์ ๋ฐ๋ณต์ฑ์ ๋์ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋น๋๊ฐ Docker ์์ฒด์ ์ ์คํธ๋ฆผ์ ์๋ ํ์ฌ ๋๊ตฌ์ ์ข ์๋๋ฉด ๋๋๋ฆด ์ ์์ต๋๋ค. ๋น๋์ ๋ฐ๋ณต์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก 0์ด๋ฉฐ Docker์ ํฅํ ๊ฐ์ ์ผ๋ก ์ด๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ณต์ฑ๋ฟ๋ง์ด ์๋๋๋ค. ๋น๋๊ฐ _docker build_์์ ๊ฒ์ํ ์ ์๋ ํน์ ์ธ์ ์งํฉ์ ์์กดํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ๋๊ตฌ๋ ๋น๋ํ ์ ์๋ ์ธ๊ณ์์ ์ ์ผํ ๋น๋ ๋๊ตฌ์ ๋๋ค. ๋ค์ดํฐ๋ธ, ๊ฒ์ ๊ฐ๋ฅํ _docker ๋น๋_.
#7115์ @peterbraden ์์ ์ฌ๋ฌ PUBLISH
ํธ์ถ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ์ด์ ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋น๋ํ ํ์ ์ด๋ฏธ์ง๋ฅผ ์ ํํ์ฌ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํต์ฌ์ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ด _Docker๊ฐ ๊ฒ์ํ ์ ์๋ ํ์ ์ด๋ฏธ์ง ์ธํธ ๋ด์์ ๋ฐ์ํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ฒ์ ๊ฐ๋ฅ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
@shykes > ๋น๋๊ฐ Docker์ ์
์คํธ๋ฆผ์ ์๋ ํ์ฌ ๋๊ตฌ์ ์ข
์๋๋ฉด
์์ฒด ... ๋น๋์ ๋ฐ๋ณต์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก 0์
๋๋ค.
๋๋ ๋์ํ๋ค. ๋๋ถ๋ถ์ Dockerfile์ apt ๋ฐ apt ์ ์ฅ์์ ์์กดํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์์์ด ๋ณํํ๊ณ ์์ต๋๋ค. ์ค๋๋ ์ ๋น๋๋ ๋น๋์ ๋์ผํ์ง ์์ต๋๋ค.
์ด์ . ๊ตฌ์ถ๋ ์ด๋ฏธ์ง๋ ์ ์ผํ ๊ธ๋ณธ์์ ์
๋๋ค.
๋ฐ๋ณต์ฑ์ด ์ ํ์ ์ฃผ์ ์์ธ์ด ์๋ ๊ฒฝ์ฐ CI ํ๋ฌ๊ทธ์ธ
์ง์์ ๊ฝค ์ฝํ ๋์์ฒ๋ผ ๋ณด์
๋๋ค. ๋น๋ ๋๊ตฌ๋ ๋ค์์ ์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๋
ํนํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ํฉ๋๋ค. ๊ทธ ์ด์์ ์ํํ์ง ์๋ ํ๋ฌ๊ทธ์ธ
configure docker build
cmd๋ ๊ฝค ์ธ๋ชจ๊ฐ ์์ด ๋ณด์
๋๋ค. ๋ด ๋น๋ ๋๊ตฌ๋
์ด๋ฏธ ์คํฌ๋ฆฝํ
ํ๊ฒฝ์
๋๋ค. ๋ ๋์ ๊ฒ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ์ฝ์งํ๋ ๊ฒ์
๋๋ค.
Dockerfile์ ๋ํ ์ฌ์ฉ ์ฌ๋ก ์ด๊ณผ ๊ทผ๋ฌด๋ ์ํคํ
์ฒ๋ฅผ ์ค๊ณํ๋ ๋ฐ ๋์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๊ฒ. Dockerfile์ ๋ค์์ ํตํด ๋จ์ํ ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ฐ ์ง์คํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๋ ์ด์ด ์ถ๊ฐ ๋ค๋ฅธ ์์
์ ์์ ์ค๋ธ ๋ฐด๋๋ก ๋ณด์
๋๋ค.
๋๋ ์ง๊ธ๊น์ง ๋์ปค๋ฅผ ์ฌ๋ํ๋ค. ๋ฉ์ง ์ผ๋ค! ์ด ํน์ ๋ฌธ์ ๋ ๊ทธ๋ฅ ๋ฐ์ํฉ๋๋ค
ํต์ฆ ํฌ์ธํธ๊ฐ ๋ ์ ์์ต๋๋ค.
2014๋
7์ 28์ผ ์์์ผ ์คํ 12์ 25๋ถ, Solomon Hykes [email protected]
์ผ๋ค:
@peterbraden https://github.com/peterbraden in #7115
https://github.com/docker/docker/issues/7115 , ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด
์ฌ๋ฌ PUBLISH ํธ์ถ์ ๊ฒฝ์ฐ ์ด์ ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ผ ๋น์ ์
๋น๋ํ ํ์ ์ด๋ฏธ์ง๋ฅผ ์ ํํ์ฌ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
ํต์ฌ์ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ด ๋ค์ ์ธํธ ๋ด์์ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค.
Docker_๊ฐ ๊ฒ์ํ ์ ์๋ ํ์ ์ด๋ฏธ์ง. ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ฒ์ ๊ฐ๋ฅ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/2112#issuecomment -50361586.
@thedeeno Dockerfile ์ ๋ชฉํ๋ ์์ค ์ฝ๋ ์ ์ฅ์๋ฅผ Docker๊ฐ ์คํํ ์ ์๋ ๊ฒ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค.
"_a_ Dockerfile์ ๋ชฉํ๋ ์์ค ์ฝ๋ ์ ์ฅ์๋ฅผ Docker๊ฐ ์คํํ ์ ์๋ ๊ฒ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค."
์ฌ๋ฌ repo->image ๋งคํ์ ๊ฐ๋ ๋ฐฉ๋ฒ์ด ์ค์ ๋ก ํ์ํ๋ค๋ ๋ฐ ๋์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ ๊ทธ๋๋ก, ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด ์ด๊ฒ์ ํ๊ธฐ ์ํด ์ ์คํฌ๋ฆฝํธ์ ๋ฉ์ดํฌํ์ผ์ ๋จ์ฉํ๊ณ ์์ต๋๋ค. ๋ด ๊ฒฝํ์ Makefile์ด๋ผ๋ ์ฌ์ฉ์ ์ง์ ์ ๋ง์ด ๋ณธ ์ ์ด ์์ต๋๋ค. ๊ตฌ์ฑ๊ณผ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ๋ ฅํ ํ์
๋๋ค. ์ด ๋๋ฌธ์ ์ฌ๋๋ค์ด ๊ด์ต์ ๋จ์ฉํ๋ ๊ฒ์ด ํ์ค์ ์ธ ์๋๋ฆฌ์ค๋ผ๊ณ ํ์ ํ ์ ์์ต๋๋ค. ์ ์ํ๋ ๋์์ผ๋ก Dockerfile ๊ตฌ๋ฌธ์ ํค์๋๋ฅผ ์ถ๊ฐํ๋ฉด Dockerfile ์์ฑ์ด ๋ ๋ณต์กํด์ง๋๋ค. ๋๋ ๊ทธ ๊ตฌ๋ฌธ์ ๊ฐ๋ฅํ ํ ๊ฐ๋จํ๊ฒ ์ ์งํ๋ ๊ฒ์ ์ฐฌ์ฑํฉ๋๋ค. PUBLISH et al์ ๋๋จธ์ง Dockerfile ๊ตฌ๋ฌธ์ ๋นํด ์ธ๋ จ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ์กด ๋๊ตฌ ๊ท์น์ ๋ฐ๋ฅด๋ ์์ด๋์ด๋ ์์ต๋๋ค. ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด -f๋ ์ฌ๋๋ค์ด ์๋ํ๋์ง๋ ๋ชจ๋ฅธ ์ฑ ์๋ํ๋ ์ผ๋ฐ์ ์ธ ํจํด์
๋๋ค. UI๋ ์ง๊ด์ ์ด์ด์ผ ํ๋ฉฐ ์ฌ๋์ _get_ -f ํ๋๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. Grokking ์๋ก์ด Dockerfile ๊ตฌ๋ฌธ์ ๊ฑฐ์ ์ง๊ด์ ์ด์ง ์์ต๋๋ค.
@peterbraden @shykes -f๊ฐ ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ฒ์์ ์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ์ด์ ๋ Docker๊ฐ ์ด๋ฏธ ์ด ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์์ ๊ฒ์ผ๋ก _์์_ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ๋ฅผ ์์ํ ์ฒซ๋ (๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ์ง ์์ ๋) ๊ฒ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ ์ํํธ์จ์ด๋ฅผ ํ ์คํธํ์ง ์๊ฑฐ๋ ์ฌ๋ฌ ํ๊ฒฝ์์ ์ํํธ์จ์ด๋ฅผ ์คํํ์ง ์๋ ์ํฉ์ด ์๋ ํ ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋๋ค. ์ง๋ 10๋ ๋์ ๋ด๊ฐ ์ ํ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์๋ ๋ค์ํ ์ปจํ ์คํธ์์ ์คํํ ์ ์์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค. ์ด ์ค๋ ๋์ ๋ง์ ์ฌ๋๋ค์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ท์น์ ๊ฐ๋ ๊ฒ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ์ปจํ ์คํธ์ ๋ถ๋ช ํ ๊ฐ์น๊ฐ ์๋ค๋ ์ ์ ๋ชจ๋ ๋์ํฉ๋๋ค(์ ์๊ฐ์๋).
๋๋ #7115(๋น ๋ฅด๊ฒ)๋ฅผ ์ฝ๊ณ ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๋ฅผ ์ํด ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์๋ง๋ ์ด๊ฒ์ PR์ ๋ํ ๋ฌธ์์ ๋ฌธ์ ์ผ ๊ฒ์ ๋๋ค. ์ ์ฌํ ํ๋๊ทธ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๋ช ํ๊ณ ์ฌ์ฉํ๋ ๋ฐ ์ฝ๊ฐ์ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค.
๊ทธ INCLUDE ์์ด๋์ด๋ก ์๋ก์ด ์ ์์ ๋ง๋ค์์ต๋๋ค - https://github.com/docker/docker/issues/7277
๋ถ์์ ์ผ๋ก - ํฌ๋ฐํ "RUN apt-get install -y ...." ๋์ ๋ ํจ์จ์ ์ธ "APT" ๋ช ๋ น์ ๋ํด ์๊ฐํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค(๊ทธ๋ฐ ๋ค์ YUM, EMERGE, PACMAN ๋ฑ).
์ ๊ทธ๋ฆฌ๊ณ ๋ง์ ์ฌ๋๋ค์ด ์ด์จ๋ "-f" ์ต์ ์ ์ค์ ๋ก ์๋ํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ์ด ์ต์ ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋๋ง๋ค ์ ์๋ฃจ์ ์ ์ค๋ช ํ๋ ๋ฌธ์์ ํ์ด์ง๋ก ์๋ดํ๋ ๋ฉ์ง ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ ์ ๋ง๋ก ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๋ฐฉ์ ์๋ ์ฝ๋ผ๋ฆฌ๋ฅผ ๋ฌด์ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@shykes ๋ "์์์ค๋ธ๋ฐด๋(out-of-band) ์ ๋ณด ์์ด ์์ค ์ฝ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ค๋ ์ฌ์ค๊ณผ ์ ์คํธ๋ฆผ ๊ฐ๋ฐ์์ ์ฌ์์ ์ ํํ ์ผ์นํ๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์๋ค๋ ์ฌ์ค์ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ Docker์ ์ฃผ์ ์ฐจ๋ณํ ์์์ ๋๋ค."
๋๋ ์ด๊ฒ์ด "๋๋ ํ ๋ฆฌ์ docker build .
๋ฅผ ์
๋ ฅํ๋ฉด ์ ๋์ ์ผ๋ก ํญ์ ์ณ์ ์ผ์ ํด์ผ ํฉ๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค๊ณ ํ์ ํฉ๋๋ค docker build .
ํ ์ผ, ํ๋ ธ์ด"
์ด ํธ์ ๊ฐ์
ํ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋๊ธฐ์ ๋ํด ๋งํ ์๋ ์์ง๋ง ์ด ํธ์ ๋ํ ์ ์์ ์ ๋๊ธฐ๋ ์ ํํ docker build .
์ ๋ช
๋ฐฑํ ํ๋์ด ์๋ ๊ฒฝ์ฐ์
๋๋ค. ๋๋ฒ๊ทธ ๋ฒ์ ์ ์ํ์ต๋๊น ์๋๋ฉด ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์ํ์ต๋๊น? Postgres ๋ฒ ์ดํฌ์ธ์ ์ํ์ต๋๊น, ์๋๋ฉด ๋ณ๋์ ์ฑ๊ณผ ํฌ์คํธ๊ทธ๋ ์ค ์ด๋ฏธ์ง๋ฅผ ๋ด๋ณด๋ด์ผ ํฉ๋๊น? ํ
์คํธ ๋ฐ์ดํฐ ๋๋ ํ๋ก๋์
๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ ์ถ์์ต๋๊น? ํ
์คํธ๋ฅผ ์คํํ๊ณ ์ถ์์ต๋๊น?
๋ฌผ๋ก , ๋๋ ์ฌ๋๋ค์ด ๋น๋๋ฅผ ์ป๊ธฐ ์ํด ์ด๋ฌํ ์ง๋ฌธ์ ๋ตํ ํ์๊ฐ ์๋ ์ธ์์ ์ด๊ณ ์ถ์ต๋๋ค. ํ์ง๋ง ๋๋ ๊ทธ ์ธ๊ณ์ ์ด๊ณ ์์ง ์๋ค. ๋ฌผ๋ก ์ด๋ฌํ ์ง๋ฌธ์ ๋ํ ๋ช ๊ฐ์ง ๋ต๋ณ์ ์์๋ก ์ ํํ๊ณ docker build .
๋ํ ๋์์ ์ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ์ ์ฌ์ค์ ์ฌ์ฉ์๊ฐ docker build .
์
๋ ฅํ ๋ ์์์ ๊ฒ์ ๊ตฌ์ถํ๋ ๊ฒ์ "์ฌ๋ฐ๋ฅธ ์ผ์ ํ๋ ๊ฒ"์ด โโ์๋๋ผ๋ ๊ฒ์
๋๋ค.
๋ง๋
ํ ๊ตฌ์ถํด์ผ ํ ๊ฒ์ด ๋ช
ํํ์ง ์์ ํ๋ก์ ํธ๊ฐ ์๋ ๊ฒ์ด ํ์ค์
๋๋ค. -f
์ง์๊ณผ ๊ฐ์ด docker ๋ด๋ถ์์ ํด๊ฒฐํ๊ฑฐ๋ ๋ค๋ฅธ ๊ณณ์์ ๊ฐ์ ธ์จ ๋์ ๋ชฉ๋ก ๋๋ ๋ค์ํ ๋ค๋ฅธ ์ ์์์ ์ฌ์ฉ์๊ฐ ์ ํํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ๋ง์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ชจ๋ ์ค๊ณ์ docker build .
์ด ๊นจ์ง๋ ์์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๊ทผ๋ณธ์ ์ธ ์ํผ๋์ค ๋ถ์ผ์น๊ฐ ์์ต๋๋ค. ๊ทธ๋ฅ ๋ฒ์ด๋ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ ์ ์์ต๋๋ค.
๋ชจ๋ ํ๋ก์ ํธ๊ฐ docker build .
๋ํด ํฉ๋ฆฌ์ ์ธ ๊ฒ์ ์ ํํ ์ ์๋ค๋ ์๊ฐ์ ํ์์
๋๋ค. ํฉ๋ฆฌ์ ์ธ ์ผ์ ํ ์ ์๋ ํ๋ก์ ํธ๊ฐ ์์ ์ผ๋ก ์กด์ฌํฉ๋๋ค. ์ด ์์ ์์ ์ ์ผํ ์ง๋ฌธ์ Docker๊ฐ ํด๋น ํ๋ก์ ํธ์ ๋ค์ค ๋น๋ ์ ํ ํน์ฑ์ ์ง์ ์ง์ํ ๊ฒ์ธ์ง ์๋๋ฉด make
๋๋ ์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ๊ธฐ์กด ๋น๋ ๋๊ตฌ๋ก ๋์ฒดํ ๊ฒ์ธ์ง์
๋๋ค. ์ด๊ฒ์ ํ์ฌ ์ผ์ด๋๊ณ ์์ต๋๋ค . ์๋ฅผ ๋ค์ด ๋ ํฐ Docker ๊ธฐ๋ฐ ๋ถ์ฐ ํ๋ก์ ํธ ์ค ํ๋์ธ Discourse๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ถ๋ถ์ ์ผ๋ก ์์ฒด ๋น๋ ์์คํ
์ ์ฌ์ฉํฉ๋๋ค.
@drewcrawford ๋ณด์๋ค์ํผ , ๊ทธ๊ฒ์ด ๋ฐ๋ก ๋ฌธ์ ์
๋๋ค. "๋์ปค ๋น๋." _the_ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด์ผ ํฉ๋๋ค. ํ๋๋ฟ์ธ ์ง์ ํ ์ด๋ฏธ์ง. ๋ค๋ฅธ ํ๊ฒฝ์ ๋ํ ์ ์ผํ ์ด๋ฏธ์ง์ ๋์์ ์กฐ์ ํ๋ ค๋ฉด docker ์คํ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ ๋น์ ์ ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์ํ ๊ฒ์
๋๋ค. ์ฑ๋ง ์๊ณ ๋ค๋ฅธ ๊ฒ์ ์์ต๋๋ค. "postgres ์ด๋ฏธ์ง"์ ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋ฐํ์์ ์ฑ์ ์ฐ๊ฒฐ๋๋ ๋ค๋ฅธ ๊ฒ์
๋๋ค. ๋์ผํ ๋ฆด๋ฆฌ์ค ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ธฐ๋ณธ์ด ์๋ ๋ช
๋ น์ผ๋ก ์คํํ์ฌ ํ
์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ด์์ ์ผ๋ก๋ ๋ค์ค ์ด๋ฏธ์ง ์ง์์ ์ฌ์ฉํ๋ฉด "๋ฆด๋ฆฌ์ค", "๋๋ฒ๊ทธ" ๋ฐ "ํ
์คํธ ํฌํจ" ๋น๋ ์ค์์ ์ ํํ ํ์์กฐ์ฐจ ์์ต๋๋ค.
Docker๋ฅผ ์ค๋๋ ์ฌ๊ณ ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถ๋ฆฌ๋ ค๊ณ ํ๋ฉด ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆด ๊ฒ์
๋๋ค. ๋๋ผ์ด๋ฒ๋ก ๋์ฌ๋ฅผ ๋ง์น๋ก ์น์ง ๋ง์ญ์์ค.
@algarius ์ ์๊ฐ์ ๋ฌธ์ ๋ ์ด ์๊ฐ์ด ์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฉ๋์ง ์๋๋ค๋ ๊ฒ์ด๋ฉฐ, ์ฌ๊ธฐ์์ ํจ๋ฌ๋ค์ ์ ํ์ด ์ง์ ์ผ๋ก ์์ด์ผ ํ๋ ๊ฒฝ์ฐ ์๋ฌด๋ ์ค๋ช ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๋๋ถ๋ถ์ ์ค์ ๋คํธ์ํฌ ์ก์ธ์ค ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ํ ์๊ตฌ ์ฌํญ์ ์ง์ํ๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค(๋ค๋ฅธ ์ข ์์ฑ์ด ์๋ ์ฌ๋ฌ ํ๊ฒฝ). ์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฌธ๋ฒ์ ๋ ๋ณต์กํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๊น? ๊ฒฐ๊ตญ์๋ ์ํํธ์จ์ด์ ์ต์ข ์ฌ์ฉ์์๊ฒ ๊ฑฐ์ ์ค๋ช ์ด ํ์ํ์ง ์์ ์ฌ๋ฌ Dockerfile๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ฐฉ์์ผ๋ก ์ฝ๊ฒ ํํํ ์ ์๋ ์๋ก ๋ค๋ฅธ ์ข ์์ฑ์ ๊ฐ์ง > 1๊ฐ์ ํ๊ฒฝ์ด ์๋ค๋ ์ฌ์ค์ ๋ค์ ์์ง๋์ด๋งํ๊ณ ๋๋ ํํ๋ ๊ฒ์ ๋๋ค.
@drewcrawford ๋ Docker ์ง์๊ณผ ํจ๊ป ๋ฐฐํฌ๋๋ ํ์ฌ ์ค์ ์ธ๊ณ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ์ ๊ณตํ์ต๋๋ค. ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
@aigarius "๋์ปค ๋ฐฉ์"์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฅ ์๋ชป๋ ๊ฒ ๊ฐ์์.
์๋ฅผ ๋ค์ด ํ ์คํธ์๋ ๋ค๋ฅธ ๋น๋(์ ์๊ฒ ์ ์งํ _recompile_)๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ํ๋ก๋์ ์ ๋๋ฌด ๋๋ฆฐ ํน์ ๋ก๊น ์ฝ๋๋ ์กฐ๊ฑด๋ถ๋ก ์ปดํ์ผํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ด make ์์คํ ์ ์ํ ์์ ์ฒ๋ผ ๋ค๋ฆฐ๋ค๋ฉด, ๋น์ ๋ง์ด ์ณ์ต๋๋ค. ์ฌ์ค ์ ์ ๊ฐ์ ์ฌ๋๋ค์ ์ค์ ๋น๋ ์์คํ ์ ์ฌ์ฉํ์ฌ ๋์ปค ๋น๋๋ฅผ ์คํฌ๋ฆฝํ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ Dockerfile์ด ๋น๋์ ์ ํธ๋๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๊ฐ ๋ ์ ์์ผ๋ฉฐ ์๋ฅผ ๋ค์ด make
๋ณด๋ค ํจ์ฌ ๋ ๊ฐ๋ ฅํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ makelike ํ์๋ก ๊ตฌ์ถ์ ์ํ ์ ํธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ด๊ฑฐ๋ ์ค์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก make
๋ฑ์ด ์๋ ์ ์์ค ๋๊ตฌ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ "์ค์ " ๋น๋ ์์คํ
์ ์์๋ก ๋ณต์กํ์ง ์์ต๋๋ค. ์ฌ๋๋ค์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ๊ณ ๋จ์ํ๋ ๋์ปค ๋น๋๊ฐ ์๋ฌด๋ฆฌ ๋ง์๋ ์ด๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ผ์ด๋ ์ผ์ docker๊ฐ make
ํธ์ถํ๋ ์๋ก์ด cc
๊ฐ ๋๋ ๊ฒ๋ฟ์
๋๋ค.
@shykes @drewcrawford @aigarius ์ด ์ค๋ ๋์ ์๋ถ๋ถ์์ ์ค๋ช ํ @shykes ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๊ฐ๋จํ -f ์ต์ ์ ๋ํ ์ ์์ ์์ฑํ์ต๋๋ค. #7284
@drewcrawford ๋น์ ์ด ์ณ์ต๋๋ค. ๋น๋์ ์ ํธ๋๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๊ฐ ๋๋ ค๋ฉด docker build
๊ฐ ์ต์ํ ์๋ฅผ ๋ค์ด ๊ฐ๋ ฅํด์ผ ํฉ๋๋ค. make
. 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋๋
make
ํ๋ฉด ์ด๋ค ๋ง์ ๋ฉ์ดํฌ๋ฅผ ๋ง์ํ์๋ ๊ฑด๊ฐ์? ์ด๋ค ๋ฒ์ ? ์ ํํ ์ด๋ค svn ์ฒดํฌ์์์์ ๊ตฌ์ถ๋์์ต๋๊น? ์ด๋ค ๋น๋ ์ต์
์ ์ฌ์ฉํฉ๋๊น? ์ด๋ค libc์ ์ฐ๊ฒฐ๋์ด ์์ต๋๊น? ๊ทํ๊ฐ ์ธ๊ธํ cc
๋ํ ๋์ผํ ์ง๋ฌธ์
๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ ์ค์ํ์ง ์์ ๊ฒ์
๋๋ค. ์๋ง๋ make
์ ์์ ๋ฒ์ ์ ๊ด๊ณ์์ด ์ฑ์ด ์ ํํ ๋์ผํ๊ฒ ๋ํ๋ ๊ฒ์
๋๋ค. ํ์ง๋ง ๋ค์ ๋งํ์ง๋ง, ์ด์ฉ๋ฉด ์ค์ํ ์๋ ์์ต๋๋ค. ๋ด๊ฐ ๋น์ ๊ณผ ๋๊ฐ์ ๋น๋๋ฅผ ์ป์ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋น์ ์ด ์ฌ์ฉํ ๊ฒ๊ณผ ๋๊ฐ์ Make์ Cc ๋น๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ฟ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋๋ ๊ทธ๋ ๊ฒ ํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๊ฒ์ด ์ ๊ฐ ํ๊ณ ์ถ์ ์ผ์
๋๋ค.
์ ๋ docker build
๋ฅผ ๋น๋ ๋๊ตฌ๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ ํํ๋ ๋ฉํ ๋น๋ ๋๊ตฌ์ ๊ฐ๊น์ต๋๋ค. ๋น๋ ํ๊ฒฝ์ ์์ ์ ์ผ๋ก ์ฌ๊ตฌ์ฑํ ์ ์๋ ์๋ ค์ง ์์์ ์
๋๋ค. ์ด๊ฒ์ด #7115์ ๋๊ธฐ์
๋๋ค.
@shykes make, Maven, rake ๋ฑ์ _๋ชจ๋ _ ๊ธฐ๋ฅ์ ์ค์ ๋ก ๋ณต์ ํ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฒฐ๊ตญ ์ด๋ฌํ ๋๊ตฌ๋ ์๋ก์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณต์ ํ์ง ์๊ณ ์ด๋ป๊ฒ๋ ์ ์ด์ธ๋ฆฝ๋๋ค.
๊ทธ๋ฌ๋ Dockerfile์ด ํ์ฌ๋ณด๋ค ๋ ํํ๋ ฅ์ด ํ๋ถํ ์ธ์ด๊ฐ ๋์ด์ผ ํฉ๋๋ค(Docker๊ฐ ์ด๋ฏธ์ง ๋น๋์ ์ ํธ๋๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ธ ๊ฒฝ์ฐ).
์ด๋ฒ ํธ์ ์ค๋ฆฐ ์ ์์ ์ฌ์ค ๊ทธ ์ ์ ๋ฐ๋ผ ๋ค์ ๊ฒธ์ํ ์์ง์์ ๋๋ค. "make์ _targets_์ ์์ํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค."๋ผ๊ณ ๋งํ๊ณ ์์ต๋๋ค. "์ด๋ค ๋ฒ์ ์ make"์ ๋ํ ์ง๋ฌธ์ ์ค์ ๋ก ๊ทธ๋ฆผ์ ํฌํจ๋์ง ์์ต๋๋ค. "๋์"์ ๊ฐ๋ ์ Maven, rake ๋ฐ ๊ธฐํ ๋ชจ๋ ์ง์งํ ๋น๋ ์์คํ ์ ๋ง๋๋ ๋ฐ ์ผ๋ฐ์ ์ ๋๋ค. ๊ตฌ๋ฌธ์ ๋ค๋ฅด์ง๋ง ๊ธฐ๋ฅ ์์ฒด๊ฐ ๋ณดํธ์ ์ด๋ผ๋ ์ฌ์ค์ ์ด๊ฒ์ด ์ฌ๋๋ค์ด ๋ฌผ๊ฑด์ ๋ง๋ค ๋ ์์ฃผ ํ๋ ์ผ์ด๋ผ๋ ๋จ์๊ฐ ๋์ด์ผ ํฉ๋๋ค.
๊ทธ๋ค์ด ๋น๋ํ๋ ๊ฒ์ด C ํ๋ก๊ทธ๋จ, Docker ์ด๋ฏธ์ง ๋๋ ๊ทธ ์ฌ์ด์ ๋ฌด์์ด๋ ์๊ด์์ด ์ฌ์ ํ ์ผ๋ถ ๋์์ ๋น๋ํ๊ณ ์์ต๋๋ค. ๋น๋ ํ๊ฒ์ ๋ํ ์์ด๋์ด๋ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด์ด์ ๋น๋ ์์คํ ๊ตฌํ, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ์ด์ ์ฒด์ ์ ๊ฑธ์ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์์ ๋ชจํธํ GNU Make ํน์ ๊ธฐ๋ฅ์ ๋ณต์ ํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ด๋ฒ์ํ ๋์๋ฅผ ์ป๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
์ฌ๊ธฐ์ "๋ฉํ ๋น๋ ๋๊ตฌ"๋ผ๋ ๊ฐ๋ ์ ์๊ฐํ๋ ค๊ณ ํ์ง๋ง ๊ทธ๋ฐ ๊ฒ์ ์์ต๋๋ค. docker๊ฐ make ๋น๋๋ฅผ ์ค์ผ์คํธ๋ ์ด์ ํ ์ ์๋ ๊ฒ์ฒ๋ผ make๋ docker ๋น๋๋ฅผ ์ค์ผ์คํธ๋ ์ด์ ํ ์ ์์ผ๋ฉฐ ์ค์ ๋ก make๋ ํ์ฌ ๋ฐ๋ก ๊ทธ๋ฐ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. Docker์ ๋น๋ ๋์์ ์ง์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด์จ๋ ์ด๋ ์์คํ ๋ ๋ณธ์ง์ ์ผ๋ก ๋ค๋ฅธ ๊ฒ๋ณด๋ค ๋ ๋ง๊ฑฐ๋ ์ ์ ๋ฉํ๊ฐ ์๋๋ฉฐ ๋ชจ๋ ๋์์ ๋น๋ํ๋ ๋น๋ ์์คํ ์ผ ๋ฟ์ด์ง๋ง Docker์ ๊ฒฝ์ฐ์๋ ํ๋๋ง ํ์ฉ๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ฌธ์ ์ ๋๋ค.
#7115์ ๊ฐ์ ์ ์์ ํฅ๋ฏธ๋กญ์ง๋ง ๋ด๊ฐ ๋์น๊ณ ์๋ ๊ฒ์ด ์๋ค๋ฉด ๋ชฉํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋์ฒดํ ์ ์์ต๋๋ค. ๋์์ ๋ฌด์์ ๊ตฌ์ถํด์ผ ํ๋์ง ์๋ ค์ค๋๋ค. #7115๋ ์ฌ์ ํ ํ ๊ฐ์ง๋ง ๊ตฌ์ถํ ์ ์๋ ๋ณด๋ค ์ ์ฐํ DSL์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๊ฒ ๋ญ๊ฐ์, ํ์ง๋ง ์ฌ๊ธฐ์์ ์๊ตฌํ๋ ๊ฒ์ ์๋๋๋ค.
docker build -t my_project_builder .
# Builds the builder container
docker run my_project_builder my_target | docker build -t my_project/my_target -< Dockerfile_MyTarget
# target is built, tarballed, and sent to stdout, then piped into a new docker build as the context and custom Dockerfile name
@drewcrawford ํ์ธ์ ์ํด docker๊ฐ Make target๊ณผ ๋๋ฑํ ๊ฒ์ ํ์ฉํ๋ฉด 1) ๋น๋ํ ๋์์ ์ง์ ํ ์ ์์ต๋๋ค. make clean; make foo
, 2) ๊ธฐ๋ณธ์ ์ผ๋ก _all_ ํ๊ฒ์ ๊ตฌ์ถํ๊ณ 3) ํ๊ฒ์ ์ด๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค... ๊ทธ๊ฒ ๋น์ ์๊ฒ ๋ง์กฑ์ค๋ฌ์ธ๊น์?
๋ง์กฑ์ค๋ฝ์ต๋๋ค... ๋ชจ๋ ๋์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ๋ ๋์ ๊ฐ๋ฐ์๊ฐ ์ ํํ ๋์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ ์ ํธํ์ง๋ง ๋ ์ค ํ๋๋ฅผ ์๋ฝํ๊ฒ ์ต๋๋ค.
๊ด์ฐฎ์.
@shykes @drewcrawford :+1:
์ผ์ด๋ ์ผ์ docker๊ฐ ์ฌ๋๋ค์ด make๋ก ํธ์ถํ๋ ์๋ก์ด cc๊ฐ ๋๋ ๊ฒ๋ฟ์ ๋๋ค.
์ด๋ฒ ํธ์ ์ค๋ฆฐ ์ ์์ ์ค์ ๋ก ๊ทธ ์ ์ ๋ฐ๋ผ ๋ค์ ๊ฒธ์ํ ์์ง์์ ๋๋ค. ๊ทธ๊ฒ์ "์ฐ๋ฆฌ๋ make์ ๋ชฉํ์ ์์ํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค"๋ผ๊ณ ๋งํ๊ณ ์์ต๋๋ค. "์ด๋ค ๋ฒ์ ์ make"์ ๋ํ ์ง๋ฌธ์ ์ค์ ๋ก ๊ทธ๋ฆผ์ ํฌํจ๋์ง ์์ต๋๋ค. "๋์"์ ๊ฐ๋ ์ Maven, rake ๋ฐ ๊ธฐํ ๋ชจ๋ ์ง์งํ ๋น๋ ์์คํ ์ ๋ง๋๋ ๋ฐ ์ผ๋ฐ์ ์ ๋๋ค. ๊ตฌ๋ฌธ์ ๋ค๋ฅด์ง๋ง ๊ธฐ๋ฅ ์์ฒด๊ฐ ๋ณดํธ์ ์ด๋ผ๋ ์ฌ์ค์ ์ด๊ฒ์ด ์ฌ๋๋ค์ด ๋ฌผ๊ฑด์ ๋ง๋ค ๋ ์์ฃผ ํ๋ ์ผ์ด๋ผ๋ ๋จ์๊ฐ ๋์ด์ผ ํฉ๋๋ค.
@drewcrawford :+1: +1,000,000
์ ๊ฐ ๊ณ์ ๊ฒช๊ณ ์๋ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ด ์ ์ฅ์์์ ๋ ๊ฐ์ Docker ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์๋ง๋ ํ๋๋ ์๋ฒ์ด๊ณ ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ๋๋ ํ๋๋ ์๋ฒ์ด๊ณ ๋ค๋ฅธ ํ๋๋ API ํธ์ถ์ ํตํด ์๋ฒ์ ๋ํด ์๋ํ๋ ํ ์คํธ๋ฅผ ์คํํ๋ ํด๋ผ์ด์ธํธ์ผ ์ ์์ต๋๋ค.
์ด์จ๋ ์ด ๋ ์ปจํ ์ด๋์ ๋ํด ์ถ๊ฐํด์ผ ํ๋ ํ์ผ์ด ์ ์ฅ์์ ์์ต๋๋ค. ์๋ ๊ทธ๋๋ก bash ์คํฌ๋ฆฝํธ์์ ๋ณ๋์ Dockerfile์ ํ ๋ฒ์ ํ๋์ฉ ๋ณต์ฌํ๊ณ ๋น๋๋ฅผ ์ํํ ๋ค์ Dockerfile์ ๊ต์ฒดํ๊ฑฐ๋ ์ญ์ ํ์ง ์๊ณ ๋ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๋ค์ ์ค ํ๋๊ฐ ํ์ํฉ๋๋ค.
1๋ฒ์ ๊ธ์ง๋ผ๊ณ ๋ฐ๋ณตํด์ ๋งํ๊ณ 2๋ฒ์ ๊ธฐ์ ์ ์ผ๋ก ํจ์ฌ ๋ ์ด๋ ต๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ "์ ์ ํ" ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
@ShawnMilo
@shykes ๋ง์ง๋ง ์๊ฒฌ์ ์ด๊ฒ์ด ๋ ์ด์ ์์ ๋งํผ ๋ถ์พํ์ง ์๋ค๋ ๊ฒ์ ๋ํ๋ด๋ ๊ฒ ๊ฐ์์ง๋ง ๊ธฐ์กด ์ ์์ด ์ ์ ํ ๊ฒ์ธ์ง ๋๋ ์ ์ ํ์ง ์์ ๊ฒฝ์ฐ ๋ณ๊ฒฝํด์ผ ํ ๊ฒ์ด ๋ฌด์์ธ์ง์ ๋ํด์๋ ์ฌ์ ํ ๋ถ๋ถ๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@jakehow ์ ๋ฐ์ดํธ ๊ฐ์ฌํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ์ ๋ํ ๊ณต์์ ์ธ ์์ ์ ์์ง ๋ฉ์์ต๋๋ค. ๊ทธ๋์ "์ข์ ๋ฐฉ๋ฒ"์ด ์์ต๋๊น? ๋ด๊ฐ ๊ฐ์ง ๊ฐ์ฅ ์ข์ ์์ด๋์ด๋ ํ์ผ์ ํ ๋ฒ์ ํ๋์ฉ repo ๋ฃจํธ์ "Dockerfile"์ ๋ณต์ฌํ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ bash ์คํฌ๋ฆฝํธ์ ๋๋ค. ์๋ํ์ง๋ง ๋๋ฝ๊ฒ ๋๊ปด์ง๋๋ค.
@ShawnMilo ์, ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ๋น๋ ๋๊ตฌ(make, rake ๋ฑ)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ์ค๋๋ bash ์คํฌ๋ฆฝํ ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ ๋๊ตฐ๊ฐ๋ ์ด๊ฒ์ ๋ค๋ฃจ๋ ๋น๋ ์ด๋ฏธ์ง๊ฐ ์๋ ์ค๋ํซ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. v2 ๋ฐ v3๋ผ๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํ๋ซํผ์ ๋ค๋ฅธ ๋ฒ์ ์ ๋ํ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ ๋ Dockerfile.v2์ Dockerfile.v3์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋น๋๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋ ๋จผ์ ln -s ./Dockerfile.v3 ./Dockerfile
ํ ๋ค์ docker build .
์ค์ ๋ก ์คํฌ๋ฆฝํธ๊ฐ ์๊ณ ./build v3
๋๋ ./build v2
ํ์ฌ ์ง์ ๋ Dockerfile ์ ./Dockerfile
์ฐ๊ฒฐํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ด๊ฒ์ ์ข์ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์
๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด PR #7995๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ด (๊ธด :-)) ์ค๋ ๋์์ ๋ ผ์๋ ์๋ฃจ์ ์ค ์ผ๋ถ๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ๊ธฐ์ ๋งค์ฐ ๊ณ ํต์ค๋ฌ์ ๋ณด์ ๋๋ค. (์ ์๊ฒ) Docker์ ๊ฐ์ฅ ํฐ ํ๋งค ํฌ์ธํธ ์ค ํ๋๋ ์ฌ์ฉํ๊ธฐ๊ฐ ์ผ๋ง๋ ์ฌ์ด์ง ์ฌ๋๋ค์๊ฒ ์ด๋ฐ ์ข ๋ฅ์ ๊ณ ๋ฆฌ๋ฅผ ๊ฑด๋๋ฐ๋๋ก ์์ฒญํ๋ ๊ฒ์ด ๊ฝค ์ฌ์ด ์ง๋ฌธ์ฒ๋ผ ๋๊ปด์ง๋ ๊ฒ์ด ์ณ์ง ์๋ค๊ณ ๋๋ผ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ด๊ฐ ๋๋ฝ๋ ๊ฒ์ด ์์ ์ ์์ง๋ง "Dockerfile"์ด๋ผ๋ ์ด๋ฆ์ ์ง์ ํด์ผ ํ๋ ๊ธฐ์ ์ ์ด์ ๊ฐ ์์ต๋๊น? PR์ ๋ง๋๋ ๋์ PR์ ์ฐพ์ ์ ์์๊ณ ๋ณ๊ฒฝ์ด ์ผ๋ง๋ ์ฌ์ด์ง ์ฆ๊ฒ๊ฒ ๋๋์ต๋๋ค.
@duglin ๋น์ ์ ๋ด ๋ชจ๋ ์ง์์ด ์์ต๋๋ค.
์ด๊ฒ์ด ํ์ฌ ํ๋ก์ ํธ์ -f
์ต์
์ด ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ ์ผ์
๋๋ค.
# build.sh
...
mv specialDockerfile Dockerfile
docker build -t $(PROJECT) .
-f
๋ฅผ ์ถ๊ฐํ ๋ ์ด๊ฒ์ +1์ด๋ผ๊ณ ์๊ฐํ์ญ์์ค.
ํ์ฌ๋ kikito ๊ฐ์ ๊ฒ๋ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ๋์ผํ ์ปจํ ์คํธ์์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ง๋ง ์ด๋ฏธ ์ ์๋ ๋๋ก CLI ์ธ์์์ ๋์ปค ํ์ผ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ด ์์ฒญ์ ๋ํด +1์ ๋๋ค.
+1000
๋๋ ์ค๋ docker๋ฅผ ์ฌ์ฉํ์ฌ golang ํ๋ก์ ํธ ํฌ๋ก์ค ํ๋ซํผ์ ๊ตฌ์ถํ๋ ค๊ณ ํ ๋ ์ด๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด๊ฒ์ ์๋ํฉ๋๋ค( boot2docker ์ฐธ์กฐ). ํ์ง๋ง ๋์ปค ๋น๋ ํ๋ก์ธ์ค์ ๋ด๋ถ์ ์ธ๋ถ๋ฅผ ํจ๊ป ์ฐ๊ฒฐํ๋ ค๋ฉด Makefile์ด ํ์ํฉ๋๋ค(์: docker cp
๋์ปค ๋ด๋ถ์์ ๋ด ๋น๋ ๋๋ ํ ๋ฆฌ๋ก ์ํฐํฉํธ).
๊ทธ๋ฌ๋ repo ๋ฃจํธ์ .git ํด๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ด repo์ ํ์ ๋๋ ํ ๋ฆฌ์์ ์ด๊ฒ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด GOPATH
๊ฐ ์์๋ฉ๋๋ค. ADD
repo ๋ฃจํธ๋ฅผ ๋ง๋ ๋ค์ ๋ด ํ์ ๋๋ ํฐ๋ฆฌ์ ๋น๋ํด์ผ ํ์ง๋ง docker์์๋ ํ์ฉํ์ง ์์ต๋๋ค.
์ด ๊ธด ์ค๋ ๋๋ฅผ ์ฝ์ ํ ๋น๋๋ฅผ ์ฌํํ ์ ์๋ค๋ ์ฐ๋ ค๋ฅผ ๋ณด์์ต๋๋ค. ์ด๋ฅผ ์ํํ ์ ์๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ -f
์ต์
์ด ๋น๋ ์ปจํ
์คํธ ๋ด์์ ๋๋ ์๋์ชฝ์ ๊ฐ๋ฆฌํค๋๋ก ํ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ์ ๋๋ ํ ๋ฆฌ์ ์ฌ๋ฌ Dockerfile์ ๊ฐ๊ณ repo ๋ฃจํธ์์ ๋น๋ํ ์ ์์ต๋๋ค. ๋ํ ์ด๊ฒ์ repo ๊ฒฝ๊ณ ๋ด๋ก ์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด .git/.hg/.foo์ ๊ฐ์ ์์ค ๋ฐ ๊ทธ ์ดํ์ด์ง๋ง repo ์ธ๋ถ๋ ์๋๋๋ค.
์ฌ๊ธฐ ๋ด๊ฐ ์๊ฐํ๋ ๊ฒ์ด ์์ต๋๋ค
FROM scratch
BUILD myname1 path/to/dockerfile/in/context
BUILD myname2 path/to/dockerfile2/in/context
docker build -t myimage .
์ด๋ ๊ฒ ํ๋ฉด 3๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค.
BUILD
ํค์๋๋ Dockerfile์ ๋ํ ์ด๋ฆ๊ณผ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด Dockerfile์ ์๋ ์ปจํ
์คํธ ๋ด์ ์์ด์ผ ํฉ๋๋ค.
๊ฐ ๋น๋ ๋ช
๋ น์ ๊ธฐ๋ณธ ๋น๋์์ ์ ์ฒด ์ปจํ
์คํธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
Dockerfile์ด ํฌํจ๋ dir-tree๋ก ์ปจํ
์คํธ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
-1
์ด ํน๋ณํ ๊ฒฝ์ฐ์ dockerfeed ์ ๊ฐ์ด ์ปจํ
์คํธ ํผ๋๋ฅผ docker build -
์ฌ์ฉํ ์ ์์ต๋๋ค.
@itsafire ์์ ์ ์ด๋ฌํ ์ ํ์ ๊ธฐ๋ฅ์ Docker์ ๊ฐ์ ธ์ ์ด๊ฒ์ด ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๋ฐ ์ง์๋๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ฌ๋๋ค์ด ์๋ํ๋ ๋น๋์ ํจ๊ป ์๋ํ๋ ๊ฒ์ ์ข์ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
๋๋ ์ฌ๊ธฐ์ ๊ธธ์ ์์๋ค. ์ด ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ๋ํ ๋ช ๊ฐ์ง pull ์์ฒญ์ด ์์ต๋๋ค. ๋ง๋์? ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ด๋ ค์ ๋ณด์ด์ง๋ ์์ต๋๋ค... @maxnordlund๊ฐ ์ธ๊ธํ ๊ท์น์ ์ ์ฉํ ์๋ ์์ต๋๋ค. ๊ฒฝ๋ก๋ฅผ ์ปจํ ์คํธ/๋ฃจํธ์ ์๋์ ์ผ๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ต์ํ boot2docket ๋ฑ๊ณผ ํจ๊ป ๋ณด๋ค ์ํํ๊ฒ ์๋ํ๊ณ "ํด๋์ฉ"์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ง๊ธ๊น์ง Docker์์ ๊ฐ์ฅ ์ง์ฆ๋๋ ๊ฒฉ์ฐจ์ด๋ฉฐ ์ ์ ๋ ๋ง์ ๋๊ตฌ๊ฐ Docker๋ฅผ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ก ์ฌ์ฉํ๊ธฐ ์์ํจ์ ๋ฐ๋ผ '-f' ํ๋๊ทธ์ ๋ํ ๊ธฐ๋ฅ์ ์ ์ํ๊ฒ ์ถ๊ฐํ์ฌ ์ด๋ฌํ ๋๊ตฌ๊ฐ ์ค๋น๋๋๋ก ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋๋ฌด ์ต์ข ์ ์ด ๋๊ธฐ ์ ์... ๊ด๋ จ: ์ด๋ฌํ ๊ด๋ จ "๋ฉํ" ๋๊ตฌ๋ ์ข ์ข Dockerfile๋น _ํ๋์_ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ค์ค ์ด๋ฏธ์ง Dockerfile์ ๊ฐ๋ ๊ฒ์ผ๋ก๋ ์๋ฆฌ์ง ์์ต๋๋ค! ๋ํ '-'๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋๊ตฌ๋ก ์๋ฆฌ์ง ์์ผ๋ฉฐ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์๊ณ ์๋ฏ์ด ๊ธฐ๋ฅ์ด ์ฌ๊ฐํ๊ฒ ์ ํ๋ฉ๋๋ค.
๊ถํ์ด ์๋ ๋๊ตฐ๊ฐ๊ฐ ์ด ์์ ์ฌํญ์ด ์์ง ๋ณํฉ๋์ง ์์ ์ด์ ๋๋ ์ ์ด๋ ์ด ๋งค์ฐ ๋ถ์กฑํ ๊ธฐ๋ฅ์ด ์ฌ์ ํ ์กด์ฌํ์ง ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์์ต๋๊น?
ํธ์์ผ๋ผ์ ์กด์ฒ๋ผ ๋๊ปด์ง๊ธฐ ์์ํฉ๋๋ค.
Docker ํ์ด Docker๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์/Docker๊ฐ ์ฌ์ฉ๋๊ธฐ๋ฅผ ์ํ๋ ๋ฐฉ์๊ณผ ์ปค๋ฎค๋ํฐ์ ๋ง์ ๋ถ๋ถ์ด Docker๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ถ์ผ์น๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ ๋ ธ์ผ๋ฉด ๊ณ ์ณ์ค.
๋์ปค ํ์ ๋ฐ๋น์ ํ๋ก์ ํธ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ ์ํํธ์จ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค. ์ฌ๋๋ค์ด ์ข์ํ๋ ์ํํธ์จ์ด๋ฅผ ์ป๊ณ ์ฝ๊ฒ ์คํํ ์ ์๋ ๊ณณ. ์ํํธ์จ์ด์ ๋น๋ ํ๋ก์ธ์ค๋ ๋ฐ๋ณต ๊ฐ๋ฅํ๊ณ ๋ช ํํด์ผ ํฉ๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋ฏธ ๋ง์ ๋น๋ ๋๊ตฌ, CI ์์คํ ๋ฑ์ผ๋ก ๋งค์ฐ ๋ณต์กํ ์ ์๋ ๊ธฐ์กด์ ์ฌ๋ด ์ํํธ์จ์ด ๋ฐฐํฌ๋ฅผ ์๋ํํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ค์๊ฒ Docker๋ ์ธํ๋ผ์ ๋ง์์ผ ํ๋ ๋ ๋ค๋ฅธ ๋๊ตฌ์ผ ๋ฟ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Docker๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์ด ์ข ๋ ์ ์ฐ์ฑ์ด ํ์ํฉ๋๋ค.
Docker(์: .deb)๊ฐ ์ ๋น์ฌ์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง ํํ์ด ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด ๋์ ์ด๋์ ๋๊น? Dockerfile์ ๋ํ ํ๋ง ์์ ์ฑ? ์๋ง ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค. ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํญ์ ๋ ๋ง์ ์ ์ฐ์ฑ์ด ํ์ํฉ๋๋ค. ์ผ๋ถ ์์ด๋์ด๋ Dockerfile ์ธ์ด๋ฅผ ์ ๋ ฅํ๊ณ ๋ค๋ฅธ ์์ด๋์ด๋ ์ ๋ ฅํ์ง ์์ต๋๋ค. ๋์ปค๋ ๋น๋์์ stdin์ ํตํด ์ปจํ ์คํธ๋ฅผ ๋จน์ ์ ์์ผ๋ฏ๋ก ๋๋ฝ๋ ๊ธฐ๋ฅ์ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํตํด ๊ตฌํํ ์ ์์ต๋๋ค.
@itsafire ๋ง์ง๋ง์ผ๋ก ํ์ธํ ๊ฒฐ๊ณผ docker๋ Dockerfile
๋ฅผ ๋จน์ ์ ์์ง๋ง ์ปจํ
์คํธ๋ ๋จน์ ์ ์์ต๋๋ค. ์ค์ ๋ก ๊ทธ๋ฐ ์์ผ๋ก Dockerfile์ ์ ๊ณตํ๋ฉด ์ปจํ
์คํธ๊ฐ ๋ฌด์๋ฉ๋๋ค. ๊ทธ๋ค์ด ๋น์ ์ด ์ ์ํ ๊ฒ์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ค๋ฉด ์ด๊ฒ์ ๋ซํ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์
๋๋ค.
ํ๋์ ๋ณด์ง ์์์ง๋ง ๊ธฐ๋ณธ ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋น๋ ์ค์ Dockerfile
๋ฐ context
๋ชจ๋ ์ ๊ณตํ๋ ๋ช
์์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ญ์์ค. ์์งํ ์ด๊ฒ 8๊ฐ์์ด ์ง๋ ์ง๊ธ๋ ์ด๋ ค ์๋ค๋ ์ฌ์ค์ ์ถฉ๊ฒฉ์ ๋ฐ์์ต๋๋ค.
@thedeeno ์ด๊ฒ์ ์ค์ ๋ก ๊ฐ๋ฅํฉ๋๋ค.
cat mystuff.tar.gz | docker build -
@ cpuguy83 ํ์ง๋ง ํด๋น ๋ช ๋ น์ผ๋ก ๋ช ์์ Dockerfile์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ค๋ฅธ์ชฝ?
@thedeeno ์, ์ํ๋ ์ปจํ ์คํธ๋ก ์ํ๋ Dockerfile์ tar์ ํฉ๋๋ค.
@cpuguy83 @thedeeno ์๋์, ์๋ํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Dockerfile์์ ์ป๋ "cwd" ๋ฒ์์ ํ์ผ์ด ์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํธ์ง: ์ด ์ง์ ์ ์๋ชป๋์์ต๋๋ค. @cpuguy83 ์ ์๋ฅผ ์๋ชป ์ดํดํ์ต๋๋ค.
@ShawnMilo ๊ทธ๋ ์ต๋๋ค. tar์ ๋ชจ๋ ๊ฒ์ ์ปจํ ์คํธ ๋ด์ ์์ต๋๋ค.
@cpuguy83 ์ฃ์กํฉ๋๋ค, ์ ์ค์์ ๋๋ค. ์ ์ฒด tarball์ด ์๋๋ผ Dockerfile์ ํ์ดํํ๋ ๊ฒ์ผ๋ก ๊ธํ๊ฒ ์ฝ์์ต๋๋ค.
@cpuguy83 ์ข์์ ! ๋๋ ๋น์ ์ด ์ ์ํ ๊ฒ์ฒ๋ผ ์๋ํ๋ค๋ฉด ๋ซ๊ธฐ ํฌํํฉ๋๋ค.
๋ถ์์ ์ธ ์ง๋ฌธ, ๋ด ์ฌ์ฉ์ ์ง์ ์๋ฃจ์ ํ์์คํฌํ๋ ๋ฌด๊ฒ๋ฅผ ์ธก์ ํ ๋ ์บ์๋ฅผ ํ์ด์์ผฐ์ต๋๋ค. ๊ทธ๊ฒ ์์ง๋ ๋ฌธ์ ์ผ? ๋์ผํ ํด๋๋ฅผ ์ฌ๋ฌ ๋ฒ tarํ๋ฉด ๋น๋ ์ ์บ์๊ฐ ์ฌ์ฉ๋ฉ๋๊น?
์์ผ๋ก๋ ํ์จ์ฃผ์ธ์!
์ ์ฒด ์ปจํ ์คํธ๋ฅผ ํ์ดํํ๋ ๊ฒ์ ์์์ ์ด์ผ๊ธฐํ ๋ด์ฉ์ ์ ํ ์ํํ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ํ๊ณ ํ์ํ ๊ฒ์ ๋ค์ํ Dockerfile๊ณผ ํจ๊ป _same_ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ ์ธ๊ธํ "๋ก๊น ์ผ๋ก ๋น๋" ๋ฐ "๋ก๊น ์์ด ๋น๋"์ ๊ฐ์ ๊ฐ๋ณ ์ด๋ฏธ์ง์ ๋๋ค. ์ด๊ฒ์ด ํ์ํ ๋ค๋ฅธ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
๋๋ ํ ๋ฆฌ๋ฅผ tar-ballingํ๋ ๊ฒ์ด ์ด ๋ฌธ์ ์ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ์์ง ๋ชปํฉ๋๋ค. ์, ํน๋ณํ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ํน์ Dockerfile์ ๋ณต์ฌํ ๋ค์ ์ ์ฒด ์ปจํ ์คํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ์ Dockerfile์ tarํ๊ณ ์ถ๊ฐํ ๋ค์ gzip์ผ๋ก ์์ถํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ docker๋ฅผ ์คํํ๊ธฐ ์ ์ ์ฌ๋ฐ๋ฅธ Dockerfile์ ์ ์๋ฆฌ์ ๋ฐฐ์นํ๋ ์ ์ฒ๋ฆฌ๊ธฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ํ์ฌ ์ฑํํด์ผ ํ๋ [๋งค์ฐ ๋์ฐํ] ํด๊ฒฐ ๋ฐฉ๋ฒ๋ณด๋ค ์ด๋ป๊ฒ ์ฝ์ต๋๊น?
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ Docker ์ํ๊ณ์ ๋์์ด ๋์ง ์์ต๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์ณค๋์?
๋ค์ ๋งํ์ง๋ง, ๊ฐ๋จํ '-f' ์ต์ ์ ๋๋ค. ์ ๋ฐ. ์ ๋ฐ, ์ด์๊ฒ ํด์ฃผ์ธ์. ์ปจํ ์คํธ์ ์๋ ๊ฒฝ๋ก๊ฐ ๋๋๋ก ํฉ๋๋ค. ๊ด์ฐฎ์ต๋๋ค.
@davber ๋น์ ์ด ์ ๋ง๋ก ์ํ๋ ๊ฒ์ Docker๊ฐ tarballing ์ปจํ
์คํธ์ Dockerfile์ ์ฒ๋ฆฌํ๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ ์ด๊ฒ์ ์์ ํ ๋ฐ๋ํ์ง ์์ต๋๋ค. ์ค์ฒฉ ๋น๋๊ฐ ์ด์ ๋ํ ๋ ๋์ ์๋ฃจ์
์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@cpuguy83 : ์, ๊ทธ๋์ Docker๊ฐ ์ ๋ฅผ ์ํด ๊ทธ๊ฒ์ ์ฒ๋ฆฌํ๊ธฐ๋ฅผ
์ค์ฒฉ ๋น๋๋ ์ด ์ค๋ ๋๋ฅผ ์์ํ ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์๊ณ ๊ณ์ ์งํํฉ๋๋ค.
์ฆ, ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๋์ผํ ๋ฃจํธ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
์, ํ์ผ์ ๋ณต์ฌํ ์ ์์ต๋๋ค. ์, 'Dockerfile'์ด๋ผ๋ ์ ํํ Dockerfile๊ณผ ์ปจํ ์คํธ์ ์ด์ํ ๊ฒฐํฉ์ ํผํ๊ธฐ ์ํด ์ด ์์ ์ ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ด์์ ์ด์ง ์์ผ๋ฉฐ ํ์ผ์ด ์ค์ ๋ก ์๋ณธ ํ์ผ๊ณผ ๋์ผํ์ง ํ์ธํ๊ธฐ ์ํด rsync๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์ด์ํฉ๋๋ค.
@cpuguy83 : ์ค์ฒฉ๋ ๋น๋๊ฐ ์ง์ง๊ฑฐ๋ฆฌ๋ ์ฌ๋ "์๊ฒ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ์ค๋ช ํ ์ ์์ต๋๊น? :-)
@davber
์ด์ ๋ํ ๋์ ๊ฒฌํด๋ ๋ค์๊ณผ ๊ฐ๋ค.
FROM scratch
BUILD myname1 path/to/dockerfile
BUILD myname2 path/to/another/dockerfile
์ด:
docker build -t myimage .
"myimage", "myimage-myname1", "myimage-myname2"๋ผ๋ 3๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค.
๊ฐ ๋ด๋ถ ๋น๋๋ ์ ์ฒด ๋น๋ ์ปจํ
์คํธ์ ์ ๋ ๊ฒฝ๋ก๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค. ์๋ ๊ฒฝ๋ก๋ Dockerfile์ ์๋์ ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ "myimage"๋ BUILD ๋ช
๋ น์ ๋์ด ์์ฒด์ ์ธ ๊ฒ์ ๊ฐ์ง ์๋ ์์ต๋๋ค.
์์ ์ธ๊ธํ๋ฏ์ด ๋ ํฐ(๊ทธ๋ฆฌ๊ณ ํ๋ฅญํ!) Docker ์ํ๊ณ์ ๋ง์ ์๋ก์ด ๋๊ตฌ๋ ๊ฐ Dockerfile์ด ์ ํํ ํ๋์ Docker ์ด๋ฏธ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ค์ํ "๋ฌดํ๊ณผ"์ ๊ฐ์ ์ค์ผ์คํธ๋ ์ดํฐ ๋๊ตฌ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Docker์ ๋ํ ํน์ ์ง์์ ์ ๊ณตํ๋ ๋ง์ ์ ๊ท ๋ฐ ๊ธฐ์กด ํด๋ผ์ฐ๋ ์๋ฃจ์ ์๋ ์ด๋ฌํ ์ผ๋์ผ ๊ฐ์ ์ด ์์ต๋๋ค. ๋ฌผ๋ก '-f' ์ต์ ์ผ๋ก ์์ฑ๋ ์ธ๊ณ์์๋ ์ปจํ ์คํธ(์: tar ๋ณผ)๋ฟ๋ง ์๋๋ผ ์ ์ฌ์ ์ผ๋ก ๋ณ๋์ Dockerfile๋ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ฐ ์ ๋ก๋๋ ์ฌ์ ํ ์ ํํ ํ๋์ Docker ์ด๋ฏธ์ง์ ํด๋นํฉ๋๋ค.
Dockerfile์ ์ปจํ ์คํธ ๋ฃจํธ์์ ์ ์ฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋๊ตฌ๊ฐ ์ด ์๋๋ฆฌ์ค์์ ์์๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Each deployment/use of a Docker image is done with an upload of either:
1. a Dockerfile solely, when no contextual operations are needed
2. a context tar ball only, containing the context with a top-level Dockerfile
3. both a context tar ball and a separate Dockerfile
์ปจํ ์คํธ์ ์ต์์ ์์ค์์ 'Dockerfile'์ ๊ฐ๋ ฅํ ๊ฒฐํฉ์ ์ค๋ ์ ์งํ ์๋ก ์ํํ์ ๋ ๊น์ด ๋ฟ๋ฆฌ ๋ด๋ฆด ๊ฒ์ ๋๋ค. ์ฆ, Docker ์ธ๊ณ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฅญํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ์์ง์ด๋ฏ๋ก ์ง๊ธ ํ๋ํด์ผ ํฉ๋๋ค.
์์งํ ๋งํด์, Dockerfile๊ณผ ์ด๋ฏธ์ง ์ฌ์ด์ ๋ํ์ ๊ฐ๋๋ค๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด๊ณ ๊ฐ๋ ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ๊ฐ์ ์ ๋๋ค. ์ ์๋ ์๊ฒฉํ๊ฒ ์ปจํ ์คํธ ๋๋ ํ ๋ฆฌ(tared up...)์ Dockerfile์ ์ ํ ๊ณต๊ฐ์ด ๋ ๊ฒ์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ (null, file) Dockerfile๋ง ์ ๊ณต๋๋ ๊ฒฝ์ฐ ๋ฐ (context, context/'Dockerfile') ์ปจํ ์คํธ๋ง ์ ๊ณต๋๋ ๊ฒฝ์ฐ.
๊ทธ๋ฆฌ๊ณ ๋ก์ปฌ ๋ฐฐํฌ์ ๊ฒฝ์ฐ์๋ ์ต์ํ ๋ก์ปฌ ์ค์ผ์คํธ๋ ์ด์ ์ Fig๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น? ์ด๋ฌํ ๋ค์ค ๋น๋ Dockerfile์์ ์ด๋ฏธ์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ ๋ค์ ๊ทธ๋ฆผ์ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ์ต์ ์ด ์๋๋๋ค.
Dockerfile๊ณผ ์ด๋ฏธ์ง ๊ฐ์ ๋ํ
์ด ๊ฐ์ ์ ์ด ์ค๋ ๋์ ์ฌ๋๋ค์ด Dockerfiles๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์์ ์ด๋ฏธ ๊นจ์ก์ต๋๋ค. ์ฆ, ๋์ปค ๋น๋๋ฅผ ์คํํ๊ธฐ ์ ์ ์คํฌ๋ฆฝํ ์ ์ฌ์ฉํ์ฌ Dockerfile์ ์๋์ผ๋ก ๊ต์ฒดํฉ๋๋ค. ๊ทธ๋ค์ ๋ํ ๊ทธ๋ค๋ง์ ์ค์ผ์คํธ๋ ์ด์ ์ ๊ฐ์ง๊ณ ์์ ๊ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฅ ์์ฒญ์ ๋์ปค ํ๊ฒฝ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋๋ผ ํน์ ์ฉ๋๋ก ๋์ปค๊ฐ ์๋ํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
@hanikesn : ๋ ๊ฐ์ ๋๊ธ:
์ฌ๊ธฐ์์ ๋ค๋ฅธ ์ ์์ ์ ์ฌ์ ์ผ๋ก ํ์ Dockerfile์ ํธ์ถํ๋ ํ๋์ ๋ค์ค ์ด๋ฏธ์ง Dockerfile์ ๊ฐ๋ ๊ฒ์ ๋๋ค. ํ์ฌ Docker๋ฅผ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ๋๊ตฌ(๊ทธ๋ฆผ ๋ฑ)์์๋ ์๋ํ์ง ์์ต๋๋ค.
@davber
์ค์ฒฉ ๋น๋๋ ์ด ์ค๋ ๋๋ฅผ ์์ํ ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์๊ณ ๊ณ์ ์งํํฉ๋๋ค.
์์์ ์ด๋ฏธ ์ง์ ํ ์ด ์๋ฃจ์ ์ ์ ์ํฉ๋๋ค.
$ docker-pre-processor [ --options ... ] . | docker build -
๋ฐ๋ฉด --options
๋ (์ฌ๊ธฐ) ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ปจํ
์คํธ๊ฐ ๋ณ๊ฒฝ๋์ด docker์ ์ ๋ฌ๋๋ ๊ท์น์
๋๋ค. ์ด๊ฒ์ ์ปจํ
์คํธ๋ฅผ ํฌํจํ๋ ์์ tar ์์นด์ด๋ธ๋ฅผ ์์ฑํ์ฌ ์ฆ์์์ ์ํ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์์ค ์ปจํ
์คํธ๊ฐ ๊ทธ๋๋ก ์ ์ง๋ ์ ์์ต๋๋ค. Dockerfile ๊ตฌ๋ฌธ๋ณด๋ค ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
@itsafire
์ค๋๋ Dockerfiles๋ฅผ ๊ธฐ๋ํ๋ ๋๊ตฌ๋ ์ด๋ป์ต๋๊น? ๊ทธ๋ค์ Amazon, Google ๋ฑ์ ์ฌ์ฉํ์ฌ ์ ์ ๋ ํ๋ถํด์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Fig ๋ฐ ์ ์ฌํ ์ค์ผ์คํธ๋ ์ด์ ํ๋ ์์ํฌ.
๊ทธ๋ฐ ๋ค์ ํ์คํ๋ '๋์ปค ์ ์ฒ๋ฆฌ๊ธฐ' ๋๊ตฌ์ ์ด๋ฌํ ๋๊ตฌ์ ์ฌ์ฉ์ ํด๋น ํ๋ ์์ํฌ, ๊ณต๊ธ์ ๋ฐ ๋๊ตฌ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
์ต์ํ ์ด ์ค๋ ๋๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ์ต์ ์ '๋์ปค'๋ก ์ ์ ํ๊ฒ ์ง์ํ๋ ๊ฒ์ด ํจ์ฌ ์ฌ์ธ ๊ฒ์ ๋๋ค.
@itsafire ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ชจ๋ ์ฌ๋์ ์ด๋ฏธ ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ผ์ข ์ ์ ์ฒ๋ฆฌ๊ธฐ ๋๋ ๋์ปค ๋น๋ ์ฃผ๋ณ ๋ํผ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ด ์ํฉ์ ๋๋ฌ์ผ ๋จํธํ๋ @docker ํ์ ๋ช ์๋ ๋ชฉํ์ธ '๋ฐ๋ณต์ฑ'๊ณผ ์ถฉ๋ํฉ๋๋ค. ์ด ํ ๋ก ๊ณผ ๋ค๋ฅธ ํ ๋ก ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋๋ค.
1๋ ์ด์ ๋ฐ 130๊ฐ ์ด์์ ๋๊ธ๊ณผ ๋๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น๋ ๊ฐ๋จํ ๋ฌธ์ ์ ๋ํด ๊ณ์ฐํ๊ณ ์์ต๋๋ค. ์ข์ ์ผ์ ๊ณ์ํ์ญ์์ค, ๋์ปค!
+1
๋๊ตฌ๋ ์ฌ๋๋ค์ด ์์ ์ ๋ฐฉ์์ ๋ฐ๋ฅด๋๋ก ๋์์ผ ํ์ง๋ง "์ฌ๋ฐ๋ฅธ" ๋ฐฉ์์ ๊ฐ์ํด์๋ ์ ๋ฉ๋๋ค. ๋๋ฅผ ์ด ํ ๋ก ์ผ๋ก ์ด๋์๋ ๊ฐ๋จํ ์ฌ๋ก:
`-- project
|-- deploy
| |-- .dockerignore
| |-- Dockerfile
| ...
`-- src
๋ด ๋ฐฉ๋ฒ์ ํ๋ก์ ํธ ๋ฃจํธ๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ADD ../src
๋ฐ -f deploy/Dockerfile
๋ ์๋ํ์ง ์์ต๋๋ค. ์ง๊ธ์ ํ๋ก์ ํธ ๋ฃจํธ์ Dockerfile
๋ฐ .dockerignore
๊ฐ ์์ง๋ง ์ ์๊ฒ๋ ๊ณ ํต์ค๋ฝ์ต๋๋ค.
ํ์๋ .dockerignore
ํ์ผ์ด ADD
์ํด ๋ฌด์๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ํ์ํ ํ์ผ์ด ์๋ ํด๋๋ฅผ ์ค๋นํ๊ณ ํ์ค ๋ช
๋ น์ค docker build -t my/image .
์ ์คํํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ต๋๋ค ADD
...
+1 ๋จ์ผ ์ ์ฅ์์ ์ฌ๋ฌ Dockerfile์ ๊ฐ์ง ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ด ์ฌ์ฉ ์ฌ๋ก: ํ๋์ ์ด๋ฏธ์ง๋ ํ๋ก๋์ ์ฌ์ฉ ๋ฐ ๋ฐฐํฌ์ฉ์ด๊ณ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ ๋์ผํ ๋ฐฑ์๋ ๋๊ตฌ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋ ๋ณด๊ณ ์ธ์คํด์ค์ด์ง๋ง ํ๋ก ํธ์๋, ์น, ์์คํ ์๋น์ค ๋๋ ํ๋ก์ธ์ค ๊ฐ๋ ์ด ํ์ํ์ง ์์ต๋๋ค...
์ด๊ฒ์ ๋ํด +1. ๋ค๋ฅธ ์๋ฒ์ ๋ํด ๋์ผํ ํด๋์ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
+1 ์ง๊ธ๊น์ง๋ Docker๋ฅผ ์ฆ๊ธฐ๊ณ ์์ง๋ง ํ์ด ์ค์ ํ ๋ฐฉ์ ๋๋ฌธ์ ํ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ข์ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ๊ณต์ ํ๋ ๋ค์ํ ๋ฐฐํฌ ๊ฐ๋ฅ ํญ๋ชฉ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ด ์ ๋ง ํ์ํฉ๋๋ค. ๋ฐฐํฌ/๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๊ฐ ๋ถํ์ํ๊ฒ ์๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ uberdocker ์ปจํ ์ด๋์ ๋ชจ๋ ๊ตฌ์ถํ๋ ๊ฒ์ ํน๋ณํ ์ข์ํ์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
@jfgreen : ์ํ๋ ๊ณณ์ ์ฌ๋ฌ ๊ฐ์ Dockerfile์ ๋๊ณ ์ํ๋ ๋๋ก ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ "./Dockerfile"๋ก repo ๋ฃจํธ์ ํ ๋ฒ์ ํ๋์ฉ ๋ณต์ฌํ๊ณ "docker build"๋ฅผ ์คํํ ๋ค์ ์ญ์ ํ๋ bash ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ํ๋ ์ผ์ด๋ฉฐ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. ๋ชจ๋ Dockerfile์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๊ธฐ๋ณธ, ํ ์คํธ ๋ฑ๊ณผ ๊ฐ์ ์ด๋ฆ์ ํ์ผ์ด ํฌํจ๋ "dockerfiles" ํด๋๊ฐ ์์ต๋๋ค.
@ShawnMilo ๊ฐ์ฌํฉ๋๋ค. ๋งค์ฐ ํฉ๋ฆฌ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
+1
+1
-f
+1 . ํ๋๊ทธ๊ฐ ์๋ต๋๋ฉด ๋์ปค๊ฐ _์ฌ๋ฐ๋ฅธ ์ผ์ ํ๋ ์ ์์ ์ธ ๊ธฐ๋ณธ๊ฐ์ด ์์ต๋๋ค. ์ด๋ค ์ด์ ์์๋ _์ฌ๋ฐ๋ฅธ ์ผ_์ ๋ํ ๋งค์ฐ ๊ตฌ์ฒด์ ์ธ ๋ณด๊ธฐ๊ฐ ์ฌ์ฉ์๋ฅผ ์ํ _์๋ชป๋ ์ผ_์ธ ๊ฒฝ์ฐ -f
์์ต๋๋ค. make
์ ๊ฐ์ ๋๊ตฌ์ ๋ํ ์์ ๋น๊ต๋ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. make
๋ ์๋ 1976๋
์ ์์ฑ๋ ๋งค์ฐ ๋
๋จ์ ์ธ ์ ํธ๋ฆฌํฐ์ด๋ฏ๋ก ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์์ ํํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ์์๋์์ต๋๋ค. man make
์์ ๋งค์ฐ ๊ฐ๋จํ ์๋์์ค์์ ์ธ๊ธ๋๋ ์ ์ผํ ํ๋๊ทธ๋... -f
์
๋๋ค.
make [ -f makefile ] [ options ] ... [ targets ] ...
๋
๋จ์ ์ธ ux ์ค์ฌ ์ ํธ๋ฆฌํฐ์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง -f
์ ๊ฐ์ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ค์ ์ฌ์ฉ์๊ฐ ์ด๊ณ ์๋ ์ค์ ์ธ๊ณ์ ๋ํ ์ค์ฉ์ ์ธ ๊ณ ๊ฐ๋ฅผ ๋๋์
๋๋ค. ๋๊ตฌ๋ ์ฌ๋ฌ๋ถ์ ์ถ์ ํ๋ค๊ฒ ํ๋ ๊ฒ์ด ์๋๋ผ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ์ด์ผ ํฉ๋๋ค. -f
์์ด ๋๊ตฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Makefile
๋๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผ ํ๋ค๋ฉด ๋๊ตฌ์ ์คํจ์
๋๋ค. ์๊ฐ์ ๋ด์ด ๋๊ธ์ ๋ฌ๊ณ +1์ ๋๋ฌํ ์ฌ์ฉ์ ์๋ฅผ ๋ณด๋ฉด ์ด ๊ธฐ๋ฅ์ ์ฒ์ ์ ์๋ ์ง 1๋
์ด ์ง๋ ํ์๋ ์๋นํ ์ ์ฉ์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
+1
+1(๋๋ ๊ถ์ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํฌํจ๋ ๊ณต์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ)
+1
+1
@crosbymichael #9707์ด ๋ณํฉ๋์ด ์ง๊ธ ๋ซ์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์น๋ฆฌ.
์ด ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ฉด ๋ค์ ์์น์์ ๋ง์คํฐ์ฉ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
master.dockerproject.com
@duglin ๊ฐ์ฌ
:๋ฐ์:
๋ฐ์ด๋๋ฆฌ์ ๋ํด @crosbymichael ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! :+1:
์ํ์ด ์๋ค์! :๋ฐ์:
docker build -f Dockerfile.dev .
์
๋๊น? ํธ์ง: ๋ค
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
docker build -f Dockerfile.dev .
์ ๋๊น? ํธ์ง: ๋ค