๐Ÿ›ณ DevOps/Docker

Dockerfile ์ž‘์„ฑ๋ฒ•

DevPoong 2023. 1. 2. 02:04

Dockerfile์ด๋ž€?

๋„์ปค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ ํ˜•์‹์˜ ํŒŒ์ผ์ด๋‹ค.

 

์ฃผ์š” ๋ช…๋ น์–ด

Command Description
FROM Base ์ด๋ฏธ์ง€๋ฅผ ์ง€์ • (ex: Node ๋‚˜ JDK ์ง€์ •)
LABEL Version, Writer์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑ
CMD ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋˜๋Š” shell ๋ช…๋ น์„ ์„ค์ •
RUN ์ด๋ฏธ์ง€ ์ž‘์„ฑ์‹œ ์‹คํ–‰๋˜๋Š” shell ๋ช…๋ น ์„ค์ • ๋ฐ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ layer๋ฅผ ๋งŒ๋“œ๋Š” ์—ญํ• 
ENTRYPOINT ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋˜๋Š” shell ๋ช…๋ น์„ ์„ค์ •
CMD์™€๋Š” ๋‹ค๋ฅด๊ฒŒ docker run์—์„œ ๋ถ€์—ฌ๋˜๋Š” ๋ช…๋ น์— overrride๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ์‹คํ–‰๋จ
EXPOSE ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ์˜คํ”ˆํ•  Port ์„ค์ •
ENV ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •
WORKDIR ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ์˜ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
COPY ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ๋ณต์‚ฌ.

 


CMD์™€ RUN์˜ ์ฐจ์ด

CMD๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์ด๊ณ  RUN์€ ์ด๋ฏธ์ง€๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์ด๋‹ค.
์ด ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜์ž!

 

Dockerfile์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

docker build <option> <Dockerfile๊ฒฝ๋กœ>
Option Description
-t ( -- tag) ์ด๋ฏธ์ง€ ์ด๋ฆ„ ์„ค์ •
-f Dockerfile์ด๋ผ๋Š” ํŒŒ์ผ๋ช…์ด ์•„๋‹Œ ๊ทธ ์™ธ์˜ ํŒŒ์ผ๋ช…์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๊ฒฝ์šฐ ํŒŒ์ผ๋ช…์„ ์ง€์ •
--pull ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋“ฑ์„ ๋‹ค์šด๋กœ๋“œ.
๊ธฐ๋ณธ์ ์œผ๋กœ FROM์— ์ง€์ •๋œ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋Š” ํ•œ๋ฒˆ ๋‹ค์šด๋กœ๋“œ์‹œ ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด์˜ ๋‹ค์šด๋ฐ›์€ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•จ.

์˜ˆ์‹œ

docker build -t test -f DockerfileNew --pull=true .