MapleStory Finger Point

โšช DevOps/๐Ÿ”ต Docker

[Docker] Dockerfile (๋„์ปคํŒŒ์ผ)

HYEJU01 2025. 4. 5. 00:13
 

๋ชฉ์ฐจ

 

     

     

     

     

    ๐Ÿ”Ž Dockerfile ์ด๋ž€

    DockerHub ์— ์˜ฌ๋ ค์ ธ ์žˆ๋Š” ์ด๋ฏธ์ง€๋“ค๋„ Dockerfile ์„ ํ™œ์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ž„

    ์ฆ‰, ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ฒŒ ํ•ด์ฃผ๋Š” ํŒŒ์ผ์ž„

     

     


     

    FROM :: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ƒ์„ฑ

    ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•จ  (ํŠน์ • ์ดˆ๊ธฐ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”๊ฐ€์ ์ธ ์„ธํŒ…์„ ํ•  ์ˆ˜ ์žˆ์Œ)

    ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”๊ฐ€ ์„ธํŒ…์„ ํ•˜๋Š” ๊ฒƒ.

    ํ•„์š”์— ๋”ฐ๋ผ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ๊ณจ๋ผ์ฃผ๋ฉด ๋จ

     

     

    โœ…  FROM ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ƒ์„ฑ

     

    `Dockerfile` ๋กœ ํŒŒ์ผ ์ƒ์„ฑ

     

     

    `FROM [์ด๋ฏธ์ง€๋ช…]`

    `FROM [์ด๋ฏธ์ง€๋ช…] : [ํƒœ๊ทธ๋ช…]`

    ํƒœ๊ทธ๋ช… ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ตœ์‹ ๋ฒ„์ „ ์‚ฌ์šฉ

     

     `FROM openjdk:17-jdk` ๋ฒ ์ด์Šค๋กœ ์ƒ์„ฑํ• 

     

     

     

     

     

    โœ… ์ด๋ฏธ์ง€ ์ƒ์„ฑ 

     

    `-t [์ด๋ฏธ์ง€๋ช…] [๋„์ปคํŒŒ์ผ์œ„์น˜๊ฒฝ๋กœ] `
    ์ด๋ฏธ์ง€ ๋ช…์„ ์–ด๋–ป๊ฒŒ ํ• ๊ฑด์ง€ ์ƒ์„ฑ
    ๋„์ปค ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๊ฒฝ๋กœ . ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ 

     

     

     

     

    `-t [์ด๋ฏธ์ง€๋ช…] : [ํƒœ๊ทธ๋ช…]  [๋„์ปคํŒŒ์ผ์œ„์น˜๊ฒฝ๋กœ] ` ์ด๋ฆ„ ๋ถ™์ด

     

     

    โœ… ์ด๋ฏธ์ง€ ์ž˜ ์ƒ์„ฑ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

     

     

     

    โœ… ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ  + ์‹คํ–‰ํ•ด๋ณด๊ธฐ -> ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ์•„๋‹˜

    -> ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ•ด์•ผํ•  ์ž‘์—…์ด ๋์ด๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์ข…๋ฃŒ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ข…๋ฃŒ๋˜์–ด์žˆ๋Š”

     

     

    โœ… ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ (๊ฐ•์ œ ์‹คํ–‰)

     

    ์‹คํ–‰๋˜์ง€ ์•Š์•„์„œ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ๋ณผ ์ˆ˜ ์—†๋‹ค

     

     

    ๋””๋ฒ„๊น…์„ ์œ„ํ•ด์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— , ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ 

    500์ดˆ ๋™์•ˆ ์‹œ์Šคํ…œ์„ ์ผ์‹œ์ •์ง€ ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด์ด๋‹ค. 

     

     


     

     

    COPY ::  ํŒŒ์ผ ๋ณต์‚ฌ (์ด๋™) 

    ํ˜ธ์ŠคํŠธ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ , ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

     

     

    โœ… Dockerfile ์— COPY ์ฝ”๋“œ ์‚ฝ์ž…

     

     

    ํ˜„์žฌ ๊ฒฝ๋กœ์—์„œ์˜ app.txt ๋ฅผ 

    ์ปจํ…Œ์ด๋„ˆ์— /app.txt (์ ˆ๋Œ€๊ฒฝ๋กœ) ์ด ๊ฒฝ๋กœ๋กœ ๋ณต์‚ฌํ•˜๊ฒ ๋‹ค.

     

     

     

    โœ… ์ด๋ฏธ์ง€ build ํ•˜๊ธฐ

     

    `docker build -t ์ด๋ฆ„ ๊ฒฝ๋กœ` 

     

     

     

     

     

     

    โœ… ํด๋”+ํด๋”์•ˆ์˜ ๋ชจ๋“  ํŒŒ์ผ ๋ณต์‚ฌ

     

     

    ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณต์‚ฌ์‹œ์—๋Š” ๋งˆ์ง€๋ง‰ / ์Šฌ๋ž˜์‰ฌ ๋ถ™์—ฌ์ฃผ๊ธฐ

     

     

    ๋นŒ๋“œ ์ƒˆ๋กœํ•ด์„œ ๋‹ค์‹œ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ณด๊ธฐ

     

     

     

    โœ…  ์™€์ผ๋“œ ์นด๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (ํŠน์ • ํŒŒ์ผ ์ง€์ •ํ•˜๊ธฐ)

     

     

     

     

     

    โœ… `.dockerignore` ํŒŒ์ผ ์ƒ์„ฑ (ํŠน์ • ํŒŒ์ผ ๋ฌด์‹œ)

     

    ๋ณต์‚ฌ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ 

     

     

     


     

     

    ENTRYPOINT :: ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ํ• ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด

     

    ์ปจํ…Œ๋‹ˆ์–ด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ช…๋ น์–ด 

     

    `ENTRYPOINT [๋ช…๋ น๋ฌธ, ๋ช…๋ น๋ฌธ]`

    ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋‚˜์—ดํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

     

     

     

    ๋นŒ๋“œ ํ›„ ์‹คํ–‰ ์‹œํ‚จ ๋’ค, log ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด `echo hello` ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜์–ด์žˆ๋Š” ๊ฑธ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ

     

     


     

     

     

    RUN : ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ์‚ฌ์šฉํ•  ๋ช…๋ น๋ฌธ ์‹คํ–‰

     

    `RUN [๋ช…๋ น๋ฌธ]`

    `RUN npm install`

     

     

     

    โœ… RUN vs ENTRYPOINT

    RUN : ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋ช…๋ น์–ด ์‹คํ–‰

    ENTRYPOINT : (์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜์œผ๋กœ) ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ ์งํ›„์— ์‹คํ–‰ 

     

     

     

    โœ… ubuntu ํ™˜๊ฒฝ์— git ์„ ๊น”๊ณ  (์ด๋ฏธ์ง€์ƒ์„ฑ๊ณผ์ •) -> ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  entrypoint ๊ฐ€ ์‹คํ–‰

     

     

    git ์ด ๊น”๋ ค์žˆ์Œ์„ ํ™•์ธ


     

     

    WORKDIR :: ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •

     

    WORKDIR ๋กœ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „ํ™˜ํ•˜๋ฉด ์ดํ›„ ๋“ฑ์žฅํ•˜๋Š” ๋ช…๋ น๋ฌธ์ด 

    ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋จ

     

    ์™œ? > ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํด๋”๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. โญ

    WORKDIR ์„ ์“ฐ์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ํŒŒ์ผ๋“ค๊ณผ ๋’ค์„ž์—ฌ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ 

     

     

    `WORK DIR [์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ ˆ๋Œ€ ๊ฒฝ๋กœ]`

     

     

     

    โœ…  ๋ณต์‚ฌํ•œ ํŒŒ์ผ๋“ค์ด ๋’ค์ฃฝ๋ฐ•์ฃฝ ๋ณด์ด๋Š” ๋ชจ์Šต > ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ฌ...

     

     

     

     

    โœ… WORKDIR ๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ณ  ๋‹ค์‹œ ๋นŒ๋“œ/์ƒ์„ฑ ํ•ด๋ณด์ž,

     

     

     

    ์ตœ์ดˆ ๊ฒฝ๋กœ๊ฐ€ my-dir ๋กœ ์ง€์ •๋˜๋ฉด์„œ ๋ณต์‚ฌ๋œ ํŒŒ์ผ๋“ค์ด ์ •๋ฆฌ๋˜์–ด์žˆ์Œ

     

     

     

     


     

     

    EXPOSE :: ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™” ํ•˜๊ธฐ

     

    `docker run -p 3306:3306 mysql` ๊ฐ™์€ ๋ช…๋ น๋ฌธ์„ ์ž…๋ ฅํ• ๋•Œ port ๋ฒˆํ˜ธ๋Š” ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•œ ์‚ฌ๋žŒ ๋ง๊ณ ๋Š” ์•Œ์•„๋ณผ ์ˆ˜๊ฐ€ ์—†์Œ

    -> ๊ทธ๋ž˜์„œ  `EXPOSE [ํฌํŠธ๋ฒˆํ˜ธ]`  ์™€ ๊ฐ™์ด ๋ฌธ์„œํ™”๋ฅผ ํ•ด์„œ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• 

    -> ์“ฐ๋‚˜ ์•ˆ์“ฐ๋‹ค ์ž‘๋™ ๋ฐฉ์‹์— ์˜ํ–ฅ ์—†์Œ