Search

4. DockerFile

1. Dockerfile์ด๋ž€?

โ€ข
Docker ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ • ํŒŒ์ผ
โ€ข
์–ด๋–ค ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์“ธ์ง€, ์–ด๋–ค ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ• ์ง€, ์–ด๋–ค ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ• ์ง€ ๋“ฑ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ •์˜ํ•จ
โ€ข
๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌํ˜„์„ฑ ์žˆ๊ฒŒ ์ด๋ฏธ์ง€ํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•ต์‹ฌ ๋„๊ตฌ์ž„
์‰ฝ๊ฒŒ ๋งํ•ด, ๋„์‹œ๋ฝ(์ด๋ฏธ์ง€)๋ฅผ ์‹ธ๋Š” ๋ ˆ์‹œํ”ผ๋ผ๊ณ  ๋ณด๋ฉด ๋จ

2. Dockerfile ๊ธฐ๋ณธ ๊ตฌ์กฐ

# ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์„ ํƒ FROM <์ด๋ฏธ์ง€๋ช…>:<ํƒœ๊ทธ> # ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ (์„ ํƒ์‚ฌํ•ญ) LABEL maintainer="yourname@example.com" # ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ RUN apt-get update && apt-get install -y python3 # ํŒŒ์ผ ๋ณต์‚ฌ (ํ˜ธ์ŠคํŠธ โ†’ ์ปจํ…Œ์ด๋„ˆ) COPY ./app /app # ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ • WORKDIR /app # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ENV PORT=8080 # ์‹คํ–‰ํ•  ๋ช…๋ น์–ด CMD ["python3", "app.py"]
Docker
๋ณต์‚ฌ

3. ์ฃผ์š” ๋ช…๋ น์–ด

โ€ข
FROM : ์–ด๋–ค ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ• ์ง€ ์ง€์ • (์˜ˆ: FROM ubuntu:20.04)
โ€ข
LABEL : ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ (๊ด€๋ฆฌ์ž, ๋ฒ„์ „ ์ •๋ณด ๋“ฑ)
โ€ข
RUN : ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (ํŒจํ‚ค์ง€ ์„ค์น˜ ๋“ฑ)
โ€ข
COPY / ADD : ํŒŒ์ผ์„ ์ด๋ฏธ์ง€์— ๋ณต์‚ฌ
โ€ข
WORKDIR : ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ • (cd ๊ฐ™์€ ์—ญํ• )
โ€ข
ENV : ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
โ€ข
EXPOSE : ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•  ํฌํŠธ ์ง€์ •
โ€ข
CMD : ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (1๊ฐœ๋งŒ ๊ฐ€๋Šฅ)
โ€ข
ENTRYPOINT : CMD์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์‹คํ–‰ ๋ช…๋ น์–ด๋ฅผ ๊ณ ์ •ํ•  ๋•Œ ์‚ฌ์šฉ

4. Dockerfile โ†’ ์ด๋ฏธ์ง€ ๋นŒ๋“œ โ†’ ์‹คํ–‰

์ด๋ฏธ์ง€ ๋นŒ๋“œ

docker build -t <์ด๋ฏธ์ง€๋ช…>:<ํƒœ๊ทธ> .
Bash
๋ณต์‚ฌ

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

docker run -d --name <์ปจํ…Œ์ด๋„ˆ๋ช…> <์ด๋ฏธ์ง€๋ช…>:<ํƒœ๊ทธ>
Bash
๋ณต์‚ฌ

5. ๊ฐ„๋‹จ ์˜ˆ์‹œ (Python ์•ฑ)

FROM python:3.10-slim WORKDIR /app COPY app.py /app CMD ["python", "app.py"]
Docker
๋ณต์‚ฌ
๋นŒ๋“œ & ์‹คํ–‰:
docker build -t my-python-app . docker run -d --name <์ปจํ…Œ์ด๋„ˆ๋ช…> my-python-app
Bash
๋ณต์‚ฌ

ํ•ต์‹ฌ ์š”์•ฝ

โ€ข
Dockerfile = ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ ˆ์‹œํ”ผ
โ€ข
FROM โ†’ RUN โ†’ COPY โ†’ WORKDIR โ†’ CMD ์ˆœ์„œ๋กœ ๋งŽ์ด ์ž‘์„ฑ
โ€ข
docker build ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  docker run ์œผ๋กœ ์‹คํ–‰