[Docker] Dockerfile

2025. 10. 27. 16:59ยทDocker

 

 

[Dockerfile]

Dockerfile์ด๋ž€ Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ฒŒ ํ•ด์ฃผ๋Š” ํŒŒ์ผ

์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๊ฐ€ ๋งŒ๋“  django ํ”„๋กœ์ ํŠธ ์ž์ฒด๋ฅผ Docker ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

 

[FROM]

๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• 

Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํŠน์ • ์ดˆ๊ธฐ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”๊ฐ€์ ์ธ ์…‹ํŒ…์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์–˜๊ธฐํ•œ 'ํŠน์ • ์ดˆ๊ธฐ ์ด๋ฏธ์ง€'๊ฐ€ ๊ณง ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ด๋‹ค.

# ์‚ฌ์šฉ๋ฒ•

# FROM [์ด๋ฏธ์ง€๋ช…] #ํƒœ๊ทธ๋ช…์„ ์ ์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉ

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

 

[๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ƒ์„ฑ]

mkdir docker-practice # django ํ”„๋กœ์ ํŠธ

cd docker-practice

code .

Dockerfile ํŒŒ์ผ ์ƒ์„ฑ

docker build -t my-node-server .

docker image ls #์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅ

docker build -t my-node-server:beta . #ํƒœ๊ทธ๋ช… ๋ถ™์—ฌ ์ƒ์„ฑ

docker image ls #์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅ

 

docker run -d my-node-server

docker exec -it e485 bash # ์‹คํ–‰๋˜๊ณ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋งŒ ๋“ค์–ด๊ฐ€์ง => ์‹คํŒจ

=> ์ด๊ฑฐ ์‚ฌ์šฉ ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500์ดˆ ๋™์•ˆ ์‹œ์Šคํ…œ์„ ์ผ์‹œ์ •์ง€ ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด

 

[COPY]

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

 

ํ˜„์žฌ ์ƒ๋Œ€๊ฒฝ๋กœ app.txt ํŒŒ์ผ (HOST์˜ ๊ฒฝ๋กœ)์˜ = ํ˜„์žฌ Dockerfile์ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” app.txt ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ์˜ /app.txt ์œ„์น˜๋กœ ๋ณต์‚ฌํ•˜๊ฒ ๋‹ค๋Š” ๋œป

 

docker build -t ubuntu-server .

docker image ls

docker run -d ubuntu-server

docker exec -it d90e bash

ls # app.txt ํŒŒ์ผ ์ƒ์„ฑ๋œ๊ฑฐ ํ™•์ธ ๊ฐ€๋Šฅ

 

[ENTRYPOINT]

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

# ๋ฌธ๋ฒ•
ENTRYPOINT [๋ช…๋ น๋ฌธ...]

# ์˜ˆ์‹œ
ENTRYPOINT ["node", "dist/main.js"]

 

 

docker build -t my-server .

docker run -d my-server

docker ps -a

docker logs [์ปจํ…Œ์ด๋„ˆ ID]

 

[RUN]

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

# ๋ฌธ๋ฒ•
RUN [๋ช…๋ น๋ฌธ]

# ์˜ˆ์‹œ
RUN npm install

 

[RUN vs ENTRYPOINT]

RUN ๋ช…๋ น์–ด์™€ ENTRYPOINT ๋ช…๋ น์–ด๊ฐ€ ํ—ท๊ฐˆ๋ฆด ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๋‘˜ ๋‹ค ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์—„์—ฐํžˆ ๋‘˜์˜ ์‚ฌ์šฉ ์šฉ๋„๋Š” ๋‹ค๋ฅด๋‹ค. RUN์€ ‘์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ณผ์ •’์—์„œ ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•˜๊ณ , ENTRYPOINT๋Š” ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ ์งํ›„์— ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

[RUN ์˜ˆ์ œ]

๋ฏธ๋‹ˆ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์ด ubuntu๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๊ณ  git์ด ๊น”๋ ค์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด๋Ÿฐ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Dockerfile

์„ ํ™œ์šฉํ•ด ubuntu, git์ด ๊น”๋ ค์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

FROM ubuntu
RUN apt update && apt install -y git
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]

 

docker build -t my-server .

docker run -d my-server

docker exec -it [Container ID] bash

git -v # ์ปจํ…Œ์ด๋„ˆ ๋‚ด์— git์ด ์ž˜ ์„ค์น˜๋๋Š” ์ง€ ํ™•์ธ

 

[WORKDIR]

์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ „ํ™˜ํ•˜๋ฉด ๊ทธ ์ดํ›„์— ๋“ฑ์žฅํ•˜๋Š” ๋ชจ๋“  RUN, CMD, ENTRYPOINT, COPY, ADD ๋ช…๋ น๋ฌธ์€ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

๊ตณ์ด ์ง€์ •ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํด๋”๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

WORKDIR๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ๊ธฐ์กด ํŒŒ์ผ๋“ค๊ณผ ๋’ค์„ž์—ฌ๋ฒ„๋ฆฐ๋‹ค.

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

# ์˜ˆ์‹œ
WORKDIR /usr/src/app

 

[WORKDIR ์˜ˆ์ œ]

mkdir docker-workdir

cd docker-workdir

src ํด๋” ์ƒ์„ฑ, app.txt ํŒŒ์ผ ์ƒ์„ฑ, config.json ํŒŒ์ผ ์ƒ์„ฑ

Dockerfile ์ƒ์„ฑ ํ›„ ์ฝ”๋“œ ์ž…๋ ฅ

FROM ubuntu

WORKDIR /my-dir

COPY ./ ./

ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]

 

docker build -t my-server .

docker run -d my-server

docker exec -it [Container ID] bash

ls # ๋“ค์–ด๊ฐˆ ๋•Œ ๋ถ€ํ„ฐ /my-dir๋กœ ๋“ค์–ด๊ฐ€์ง€๋ฉฐ, ๊ทธ ์•ˆ์—์„œ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์„ ํ™•์ธ

 

[EXPOSE]

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ํฌํŠธ์— ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์ง€๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋Š” ์—ญํ• ๋งŒ ํ•œ๋‹ค. docker -p 8080:8080 ...๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด์˜ -p ์˜ต์…˜๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ์ผ์ฒด ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•˜์ž๋ฉด EXPOSE ๋ช…๋ น์–ด๋Š” ์“ฐ๋‚˜ ์•ˆ์“ฐ๋‚˜ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

# ๋ฌธ๋ฒ•
EXPOSE [ํฌํŠธ ๋ฒˆํ˜ธ]

# ์˜ˆ์‹œ
EXPOSE 3000

 

[nest.js ํ”„๋กœ์ ํŠธ Docker๋กœ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์‹ค์Šต]

1. npm i -g @nestjs/cli

2. nest new my-server

3. cd my-server

4. code .

5. Dockerfile ์ƒ์„ฑ

 

6. .dockerignore ํŒŒ์ผ ์ƒ์„ฑ

   node_modules # ์ด๊ฑด ๋ณต์‚ฌํ•˜์ง€ ์•Š์Œ, npm install๋งŒํ•˜๋ฉด node_modules์ด ์ƒ๊ธธ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์—

7. docker build -t my-server .

8. docker image ls

9. docker run -d -p 3000:3000 my-server

10. localhost:3000 ์ ‘์†

 

 

 

 

 

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84 ์ฐธ์กฐ

'Docker' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Docker] Docker Compose ์‹ค์Šต (+ ์ฐธ๊ณ  ๋งํฌ)  (0) 2025.10.28
[Docker] Docker Compose, Docker Compose CLI  (0) 2025.10.28
[Docker] PostgreSQL ์‹คํ–‰  (0) 2025.10.27
[Docker] Docker Volume  (0) 2025.10.27
[Docker] Docker CLI  (0) 2025.10.27
'Docker' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Docker] Docker Compose ์‹ค์Šต (+ ์ฐธ๊ณ  ๋งํฌ)
  • [Docker] Docker Compose, Docker Compose CLI
  • [Docker] PostgreSQL ์‹คํ–‰
  • [Docker] Docker Volume
kasie
kasie
3๋…„์ฐจ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜ ์„ฑ์žฅ ๊ธฐ๋ก, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ „ ๊ฐœ๋ฐœ ๋…ธํŠธ! ๐Ÿš€
  • kasie
    ๐ŸŽต return 200 – ์ฝ”๋“œ๋„ ๋ธ”๋กœ๊ทธ๋„, ์ •์ƒ ์ž‘๋™ ์ค‘
    kasie
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (80)
      • Dev-Note (7)
      • Trouble-Shooting (4)
      • Docker (8)
      • SQLAlchemy (1)
      • Django-rest-framework (32)
      • TypeScript & NestJS (4)
      • Kotlin & Spring Boot (3)
      • Git (3)
      • Refactoring (3)
      • Academics (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๊ณต์‹๋ฌธ์„œ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ 3ํšŒ
    ํ•„๊ธฐ
    ์ˆ˜์ œ๋น„
    django
    cbt
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ
    ์šฐ๋ถ„ํˆฌ๋ฆฌ๋ˆ…์Šค #์ •๋ฆฌ #ํ”„๋กœ์„ธ์Šค๊ด€๋ฆฌ๋ช…๋ น #ps #๋ฆฌ๋ˆ…์Šค #Linux #linux #vmware
    2022
    ์œ ํˆฌ๋ธŒ
    ์ •์ฒ˜๊ธฐ
    Document
    DRF
    ๋น…๋ถ„๊ธฐ
    ๋น…๋ถ„๊ธฐํ•„๊ธฐ
    ์‹œ๋‚˜๊ณต
    ์šฐ๋ถ„ํˆฌ ๋ฆฌ๋ˆ…์Šค #๋ฆฌ๋ˆ…์Šค #์šฐ๋ถ„ํˆฌ #ํŠน์ˆ˜๋ฌธ์ž #๋ฆฌ๋ˆ…์ŠคํŠน์ˆ˜๋ฌธ์ž #VM #VMWARE #vm #vmware
    ORM
    ๋น…๋ฐ์ดํ„ฐ๋ถ„์„๊ธฐ์‚ฌ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
kasie
[Docker] Dockerfile
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”