๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Programming/Docker & Kubernetes

[Docker] (9) Dockerfile(๋„์ปคํŒŒ์ผ) - ์Šค๋งˆํŠธํ•˜๊ฒŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

by ๋ญ…์ฆค 2023. 8. 21.
๋ฐ˜์‘ํ˜•
Docker ์ „์ฒด ํฌ์ŠคํŒ…
๋”๋ณด๊ธฐ

[Docker] (1) ๋„์ปค ๊ฐœ๋… ์„ค๋ช… | ๋„์ปค๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?

[Docker] (2) ๋„์ปค & ๋„์ปค์ปดํฌ์ฆˆ ๋‹ค์šด๋กœ๋“œ

[Docker] (3) ๋„์ปค ํ•ต์‹ฌ ๊ฐœ๋… - ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋„์ปค ํ—ˆ๋ธŒ

[Docker] (4) docker pull(์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ) & docker run(์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ/์‹คํ–‰) & ํฌํŠธํฌ์›Œ๋”ฉ(ํฌํŠธ๋งคํ•‘)

[Docker] (5) ๋„์ปค run ๋ช…๋ น์–ด ์˜ต์…˜, ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

[Docker] (6) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ ‘์†ํ•˜๊ธฐ - docker exec & docker attach

[Docker] (7) ๋„์ปค volume(๋ณผ๋ฅจ) ์˜ต์…˜ - ์ปจํ…Œ์ด๋„ˆ ํด๋”์™€ ํ˜ธ์ŠคํŠธ ํด๋” ์—ฐ๊ฒฐํ•˜๊ธฐ

[Docker] (8) ๋„์ปค commit(์ปค๋ฐ‹) & push(ํ‘ธ์‹œ) - ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ์šด ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ  ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œ

[Docker] (9) Dockerfile(๋„์ปคํŒŒ์ผ) - ์Šค๋งˆํŠธํ•˜๊ฒŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

[Docker] (10) Dockerfile ๋นŒ๋“œ ์˜ˆ์‹œ | ENTRYPOINT ์™€ CMD์˜ ์ฐจ์ด

[Docker] (11) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ vscode ์—ฐ๋™ํ•˜๊ธฐ | ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐœ๋ฐœ

[Docker] (12) ๊นƒํ—ˆ๋ธŒ๋กœ ๋„์ปค ์ด๋ฏธ์ง€ ๊ณต์œ ํ•˜๊ธฐ | Packages Container Registry

 

 

Dockerfile

Dockerfile์€ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ง€์‹œ์‚ฌํ•ญ๋“ค์„ ํฌํ•จํ•˜๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ, Dockerfile์„ ์‚ฌ์šฉํ•˜๋ฉด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๊ณ , ์ด๋ฏธ์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋นŒ๋“œ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. Dockerfile์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋ฅผ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๋‹ค.

 

๋„์ปคํŒŒ์ผ ๋นŒ๋“œ vs ์ปจํ…Œ์ด๋„ˆ ์ปค๋ฐ‹

 

๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋„์ปคํŒŒ์ผ์„ ๋นŒ๋“œํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ปค๋ฐ‹ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ๊ฐ๊ฐ ์–ด๋–ค ์žฅ๋‹จ์ ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

  • Dockerfile build (๋„์ปคํŒŒ์ผ ๋นŒ๋“œ)
    • ๋„์ปคํŒŒ์ผ์€ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ, ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์ด ์™„์ „ํžˆ ์žฌํ˜„ ๊ฐ€๋Šฅ
    • ์ฝ”๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
    • ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์„ค์ •๊ณผ ๋‹จ๊ณ„๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ •์˜ํ•˜๋ฏ€๋กœ, ์ด๋ฏธ์ง€์˜ ๊ตฌ์„ฑ์„ ์‰ฝ๊ฒŒ ์œ ์ง€๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ์Œ
  • Container commit (์ปจํ…Œ์ด๋„ˆ ์ปค๋ฐ‹)
    • ๊ฐ„ํŽธํ•˜๊ฒŒ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋„์ปค ํŒŒ์ผ์— ๋น„ํ•ด ๋‹จ์ ์ด ๋งŽ์Œ
    • ์ปจํ…Œ์ด๋„ˆ ์ปค๋ฐ‹์œผ๋กœ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ์„ ํฌํ•จํ•˜๋ฏ€๋กœ, ์ปจํ…Œ์ด๋„ˆ ์ปค๋ฐ‹์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฅธ ํ™ฉ๊ฒฝ์—์„œ ์žฌํ˜„ํ•˜๊ธฐ ํž˜๋“ค ์ˆ˜ ์žˆ์Œ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Ÿฐใ„นํƒ€์ž„ ์ค‘ ์ˆ˜ํ–‰ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ด๋ฏธ์ง€์˜ ์ผ๊ด€์„ฑ๊ณผ ์•ˆ์ •์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ
    • ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ทธ๋Œ€๋กœ ํฌํ•จํ•˜๋ฏ€๋กœ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ

 

 

Dockerfile ์ž‘์„ฑ

 

Dockerfile์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

  1. ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์„ ํƒ: ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ๊ธฐ์กด ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ์ด ์ด๋ฏธ์ง€๋ฅผ '๋ฒ ์ด์Šค ์ด๋ฏธ์ง€'๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์ด๋‚˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋กœ ์„ ํƒ.
  2. ํ•„์š”ํ•œ ํŒŒ์ผ ๋ฐ ๋ช…๋ น ์ถ”๊ฐ€: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์œ„์— ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ๋ช…๋ น์„ ์ถ”๊ฐ€. ํŒŒ์ผ ๋ณต์‚ฌ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •, ์‘์šฉํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.
  3. ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •: ์ด๋ฏธ์ง€ ๋‚ด์—์„œ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ง€์ •.
  4. ๋ช…๋ น ์‹คํ–‰: ์ด๋ฏธ์ง€ ๋‚ด์—์„œ ์‹คํ–‰ํ•  ๋ช…๋ น์„ ์ •์˜. RUN, CMD, ENTRYPOINT ๋“ฑ์˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰.
  5. ํฌํŠธ ๋…ธ์ถœ: ์ด๋ฏธ์ง€๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๊ฐœ๋ฐฉํ•  ํฌํŠธ๋ฅผ ์ง€์ •. EXPOSE ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๊ฐœ๋ฐฉํ•  ํฌํŠธ๋ฅผ ๋ช…์‹œ.
  6. ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ค์ •: ์ด๋ฏธ์ง€์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ. 

์ด๋ ‡๊ฒŒ Dockerfile์„ ์ž‘์„ฑํ•œ ํ›„, docker build ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Dockerfile์— ์ •์˜๋œ ์ง€์‹œ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜์—ฌ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ช…๋ น์–ด ์„ค๋ช… ์˜ˆ์‹œ
FROM ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ง€์ • FROM ubuntu:20.04
WORKDIR ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ • WORKDIR /usr/src/app
ENV ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • COPY app /usr/src/app
COPY ํ˜ธ์ŠคํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ด๋ฏธ์ง€ ๋‚ด๋ถ€๋กœ ๋ณต์‚ฌ COPY app /usr/src/app
ADD COPY์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€์›. URL๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์••์ถ• ํŒŒ์ผ์„ ํ’€ ์ˆ˜ ์žˆ์Œ ADD https://example.com/file.txt /app/
RUN ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด ์ •์˜. ํŒจํ‚ค์ง€ ์„ค์น˜, ํŒŒ์ผ ๋ณต์‚ฌ, ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๋นŒ๋“œ ๋“ฑ RUN apt-get update && apt-get install -y curl
EXPOSE ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐœ๋ฐฉํ•  ํฌํŠธ ์ง€์ • EXPOSE 80
CMD ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด ์ง€์ •. `docker run`  ๋ช…๋ น์—์„œ ๋ช…๋ น์–ด๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰ CMD ["npm", "start"]
ENTRYPOINT ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•ญ์ƒ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด. `docker run` ๋ช…๋ น์—์„œ ์ถ”๊ฐ€์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ๋ช…๋ น์–ด๊ฐ€ ์ธ์ž๋กœ ์‚ฌ์šฉ ENTRYPOINT ["npm", "start"]
VOLUME ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋ณผ๋ฅจ์„ ๊ณต์œ  VOLUME /data

 

Dockerfile ๋นŒ๋“œ

 

docker build ๋ช…๋ น์€ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด๋กœ, ์ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปคํŒŒ์ผ(Dockerfile)์— ์ •์˜๋œ ์ง€์‹œ์‚ฌํ•ญ์„ ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์—์„œ ๋„์ปคํŒŒ์ผ์— ์ •์˜๋œ ๋‹จ๊ณ„๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

 

docker build [์˜ต์…˜] <๊ฒฝ๋กœ>

์—ฌ๊ธฐ์„œ <๊ฒฝ๋กœ>๋Š” ๋„์ปคํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์˜ต์…˜์€ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์„ ์กฐ์ •ํ•˜๊ณ  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • -t, --tag: ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€์— ํƒœ๊ทธ๋ฅผ ์ง€์ •. ์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ.
  • -f, --file: ์‚ฌ์šฉํ•  ๋„์ปคํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ./Dockerfile
  • -q, --quiet: ๋นŒ๋“œ ์ง„ํ–‰ ์ƒํ™ฉ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ
  • --build-arg: ๋„์ปคํŒŒ์ผ ๋‚ด์—์„œ ARG ์ง€์‹œ๋ฌธ์— ์ „๋‹ฌํ•  ๋นŒ๋“œ ์ธ์ž๋ฅผ ์ง€์ •.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•œ ๋„์ปคํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ my-image๋ผ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ํƒœ๊ทธ๋ฅผ v1.0์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

docker build -t my-image:v1.0 .

 

 

Dockerfile ์ž‘์„ฑ ๋ฐ build ์˜ˆ์‹œ

 

๋‹ค์Œ์€ Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ Dockerfile์˜ ์˜ˆ์‹œ์ด๋‹ค.

# ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์„ ํƒ
FROM node:14

# ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
WORKDIR /app

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…์†์„ฑ ์„ค์น˜
COPY package.json package-lock.json /app/
RUN npm install

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์ผ ์ถ”๊ฐ€
COPY . /app/

# ํฌํŠธ ๋…ธ์ถœ
EXPOSE 3000

# ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ์‹คํ–‰๋  ๋ช…๋ น
CMD ["npm", "start"]

Dockerfile์„ ์ž‘์„ฑํ•œ ํ›„์—๋Š” ์ด ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด docker build ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

docker build [์˜ต์…˜] [Dockerfile ๊ฒฝ๋กœ]
docker build -t my-node-app .

์œ„์˜ ๋ช…๋ น์€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(.)์— ์œ„์น˜ํ•œ Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ my-node-app๋ผ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋Š” docker run์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

httpd ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•œ Dockerfile ์ž‘์„ฑ ๋ฐ build ์˜ˆ์‹œ

 

๋ฏธ๋ฆฌ ์ž‘์„ฑํ•œ html ํŒŒ์ผ๊ณผ Dockerfile

docker build -t httpd_test ./				
docker run -dit -p 8080:80 httpd_test
  • ํŠน์ • ๊ฒฝ๋กœ์— index.html ์ž‘์„ฑ (ํŠน์ • ํ…์ŠคํŠธ ๋„์šฐ๊ธฐ ์œ„ํ•ด)
  • Dockerfile๋กœ httpd ์ด๋ฏธ์ง€์— ์ž‘์„ฑํ•œ html ํŒŒ์ผ์„ COPY
  • build ํ•˜๊ณ  ํฌํŠธํฌ์›Œ๋”ฉ ์ ์šฉํ•œ ์ƒํƒœ๋กœ run

build, run ๋ช…๋ น

 

localhost:8080 ํ™•์ธ

 

๋ฐ˜์‘ํ˜•