
[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 ์ ์

'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 |