DockerFile ์ด๋?
Docker ์ด๋ฏธ์ง๋ DockerHub๋ฅผ ํตํด ๋ค์ด๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค.
์ด Docker ์ด๋ฏธ์ง๋ค๋ ๋๊ตฐ๊ฐ ๋ง๋ค์ด์ DockerHub์ ์ฌ๋ ค๋์ ๊ฒ์ด๋ค.
๊ทธ๋ผ ๊ทธ Docker ์ด๋ฏธ์ง๋ ์ด๋ป๊ฒ ๋ง๋๋ ๊ฒ์ผ๊น?
DockerFIle์ ํ์ฉํด์ Docker์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋ค.
FROM:๋ฒ ์ด์ค ์ด๋ฏธ์ง ์์ฑ
vscode๋ก Dockerfile ์ ์์ฑํด์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์์ฑํด๋ณธ๋ค.
FROM ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ์ญํ ์ ํ๋ค.
Docker ์ปจํ ์ด๋๋ฅผ ํน์ ์ด๊ธฐ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ถ๊ฐ์ ์ธ ์ ํ ์ ํ ์ ์๋ค.
์ฌ๊ธฐ์ ์๊ธฐํ๋ 'ํน์ ์ด๊ธฐ ์ด๋ฏธ์ง' ๊ฐ ๊ณง ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ด๋ค.
์) ์ปจํ ์ด๋๋ฅผ ์๋ก ๋์์ ํ๊ฒฝ์ ๊ตฌ์ถํ ๋ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋จ์ด ์ด๋ค๊ฒ ๊น๋ ค์์ผ๋ฉด ์ข๊ฒ ๋์ง ์ ํํ๋ ์ต์

FROM [์ด๋ฏธ์ง๋ช
]
FROM [์ด๋ฏธ์ง๋ช
]:[ํ๊ทธ๋ช
]
ํ๊ทธ๋ช ์ ์์ฑํ์ง ์์ผ๋ฉด latest ๋ฒ์ ์ด ์๋์ผ๋ก ์ค์นํ๋ค.
FROM ์ผ๋ก ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์์ฑ
Dockerfile์ FROM ์ผ๋ก jdk17๋ฒ์ ์ ์์ฑํ๋ค. 
docker build -t [์์ฑํ ์ด๋ฏธ์ง ์ด๋ฆ] [๋์ปค ํ์ผ ๊ฒฝ๋ก]
$ docker build -t my-jdk17-server .
์๋ ๊ฒฝ๋ก ์ด๋ฏ๋ก ํ์ฌ์์น์ธ . ๋ฅผ ์ ๋ ฅํ๋ค.

๋น๋ ํ ์ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋๋์ง ํ์ธํด๋ณธ๋ค.

์ ์์ ์ผ๋ก my-jdk17-server๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
TAG๋ ๋ํดํธ๋ก latest๋ก ๋ถ๋๋ค.
๊ทธ๋ฌ๋ฉด ํ๊ทธ๋ช ์ ์ค์ ํด์ ๋ค์ ๋ฐ์๋ณด์

์ด์ ์ปจํ ์ด๋๋ฅผ ์คํํด์ ํ์ธํด๋ณธ๋ค.
โฏ docker run -d my-jdk17-server
docker ps
์คํ์ค์ธ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ๋ฐฉ๊ธ ์คํํ ์ปจํ ์ด๋๊ฐ ๋ณด์ด์ง ์๋๋ค
ps -a ๋ก ํ์ธํด๋ณด๋ฉด ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๊ฒ์ผ๋ก ๋ณด์ด๋๋ฐ, ์ด๋ ๋์ปค์ ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ ์ปจํ ์ด๋ ๋ด๋ถ์ ์ผ๋ก ์คํํด์ผํ ์์ ๋ค์ด ์๋ฃ๋๋ฉด ์๋์ผ๋ก ์ข ๋ฃํ๊ฒ ๋๋ค.

์ด ๋ FROM ์๋์ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ์คํ ์ํฌ์์๋ค.
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
์์ ์ฝ๋๋ฅผ ์ ๋ ฅํ ํ ๋ค์ build ํ ํ์ธํด๋ณด๋ฉด ์ ์์ ์ผ๋ก ์คํ๋๋ค.
์ข ๋ฃ๋ ์ปจํ ์ด๋์ ๋ค์ด๊ฐ์ ๋๋ฒ๊น ํ๊ณ ์ถ์ ๋
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
# 500์ด ๋์ ์๋น์ค๋ฅผ ์ผ์์ ์ง ์ํค๋ ๋ช ๋ น์ด
COPY :ํ์ผ ๋ณต์ฌ
FROM ubuntu
COPY app.txt /app.txt
ENTRYPOINT ["/bin/bash","-c","sleep 500"]
ํ์ฌ ๊ฒฝ๋ก์ ์๋ app.txt๋ฅผ ์ปจํ ์ด๋์ ์ ๋๊ฒฝ๋ก์ app.txt๊ฒฝ๋ก๋ก ๋ณต์ฌํ๊ฒ ๋ค๋ผ๋ ๋ป์
ENTRYPOINT :์ปจํ ์ด๋๊ฐ ์์ํ ๋ ์คํ๋๋ ๋ช ๋ น์ด
FROM ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
hello๋ผ๋ ๋ฌธ์์ด์ ์ถ๋ ฅํด์ค๋ผ๋ ๋ช ๋ น์ด์
logs ๋ช ๋ น์ด๋ก ํ์ธ๊ฐ๋ฅ
RUN :์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ์ฌ์ฉํ ๋ช ๋ น๋ฌธ ์คํ
Run ์ ์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์์ ๋ช ๋ น์ด๋ฅผ ์คํ์์ผ์ผ ํ ๋ ์ฌ์ฉํ๋ค.
# ๋ฌธ๋ฒ
RUN [๋ช
๋ น๋ฌธ]
# ์์
RUN npm install
Run VS ENTRYPOINT
RUN์ ์ด๋ฏธ์ง ์์ฑ๊ณผ์ ์์ ํ์ํ ๋ช ๋ น์ด๋ฅผ ์คํ ์ํฌ ๋ ์ฌ์ฉ
ENTRYPOINT ๋ ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์งํ์ ๋ช ๋ น์ด๋ฅผ ์คํ์ํฌ ๋ ์ฌ์ฉ
์์ ) ๋๋ ubuntu ๋ผ๋ ์ปจํ ์ด๋ ํ๊ฒฝ์ git์ด ๊น๋ ค์์ผ๋ฉด ์ข๊ฒ ๋ค๊ณ ๊ฐ์
dockerfile ์์ฑ
FROM ubuntu
RUN apt update && apt install -y git #์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ ์คํ๋๋ ๋ช
๋ น์ด
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # ์ปจํ
์ด๋๋ฅผ ์คํํ ๋ ์คํ๋๋ ๋ช
๋ น์ด
WORKDIR : ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์
WORKDIR ์ผ๋ก ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ํํ๋ฉด ๊ทธ ์ดํ์ ๋ฑ์ฅํ๋ ๋ชจ๋ RUN, CMD , ENTRYPOINT, COPY, ADD ๋ช ๋ น๋ฌธ์ ํด๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ๋๋ค.
์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ตณ์ด ์ง์ ํด์ฃผ๋ ์ด์ ๋ ์ปจํ ์ด๋ ๋ด๋ถ์ ํด๋๋ฅผ ๊น๋ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ค.
์ฌ์ฉ๋ฒ
# ๋ฌธ๋ฒ
WORKDIR [์์
๋๋ ํ ๋ฆฌ๋ก ์ฌ์ฉํ ์ ๋ ๊ฒฝ๋ก]
# ์์
WORKDIR /usr/src/app
์์
FROM ubuntu
WORKDIR /my-dir
COPY ./ ./
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
EXPOSE :์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉ ์ค์ธ ํฌํธ๋ฅผ ๋ฌธ์ํํ๊ธฐ
EXPOSE ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ด๋ค ํฌํธ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ง๋ฅผ ๋ฌธ์ํํ๋ ์ญํ ๋ง ํ๋ค.
# ๋ฌธ๋ฒ
EXPOSE [ํฌํธ ๋ฒํธ]
# ์์
EXPOSE 3000
'Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Docker Compose ? (0) | 2025.03.25 |
|---|---|
| Next.js ๋ฅผ Docker๋ก ๋ฐฐํฌํ๊ธฐ (1) | 2025.03.22 |
| Docker Volume (๋์ปค ๋ณผ๋ฅจ) /MySQL๋ก ๋ณผ๋ฅจ ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2025.03.22 |
| Docker CLI (0) | 2025.03.16 |
| Docker ์ค์น (0) | 2025.03.15 |