์ด๋ฏธ์น๋ ๊ณ์ธต์ ์ผ๋ก ์ ์ฅ๋๋ค. (์ด๋ฏธ์ง ๋ ์ด์ด)
์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ ์ ์ฅ์๋ฅผ ๋ ์ง์คํธ๋ฆฌ๋ผ๊ณ ํ๋ค. ๋ฌด๋ฃ ๋ ์ง์คํธ๋ฆฌ๋ก ๋์ปค ํ๋ธ ์กด์ฌ
--name ํ๋๊ทธ๋ฅผ ํตํด ์ปจํ ์ด๋์ ์ด๋ฆ์ ๋ถ์ด๊ณ , ์ด๋ฅผ ํตํด ์ปจํ ์ด๋๋ฅผ ์ง์นญํจ
HTTP ์์ฒญ์ ๊ตฌ๊ธ๋ก ๋ณด๋ธ๋ค. ํ๊ฒฝ ๋ณ์๋ ์ด์์ฒด์ ์์ ์ ๊ณตํ๋ ํค-๊ฐ ์์ด๋ค. ๋์ปค ์ปจํ ์ด๋๋ ๋ณ๋์ ํ๊ฒฝ๋ณ์๋ฅผ ๊ฐ์ง ์ ์๋๋ฐ, ์ด์์ฒด์ ๊ฐ ์๋ ๋์ปค๊ฐ ๋ถ์ฌํด ์ค๋ค.
ํธ์คํธ ์ปดํจํฐ์ ํ๊ฒฝ๋ณ์๋ ์ปจํ ์ด๋์ ๋ณ๊ฐ์ด๋ค. ์ปจํ ์ด๋๋ ์ค์ง ๋์ปค๊ฐ ๋ถ์ฌํ ํ๊ฒฝ๋ณ์๋ง์ ๊ฐ๋๋ค.
๋์ปค ์ด๋ฏธ์ง๋ ์ค์ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ ํฌํจํด ํจํค์ง๋์ง๋ง, ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ ์ด ์ค์ ๊ฐ์ ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค.
์ด๋ฅผ ํ๊ฒฝ๋ณ์๋ก ๊ตฌํํ๊ณ , ๋์ผํ ์ปจํ ์ด๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ด์ง๋ง, ์ค์ ๊ฐ์ ์ํด ๋์์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Dockerfile์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ์ด๋ค.
๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ ๊ฒฐ๊ณผ๋ก ๋์ปค ์ด๋ฏธ์ง๊ฐ ๋ง๋ค์ด์ง๋ค.
๋ช ๋ น์ด๋ฅผ ์์๋ณด๋ฉด
- FROM: ์ด๋ฏธ์ง์ ์์์
- ENV:ํ๊ฒฝ ๋ณ์ ๊ฐ ์ง์ ํ๋ ๋ช ๋ น์ด, key=”value” ํ์
- WORKDIR: ์ปจํ ์ด๋ ์ด๋ฏธ์ง ํ์ผ ์์คํ ์ ๋๋ ํฐ๋ฆฌ ๋ง๋ค๊ณ , ์ด๋ฅผ ์์ ๋๋ ํฐ๋ฆฌ๋ก ์ง์ ํ๋ ๋ช ๋ น์ด
- COPY:๋ก์ปฌ ํ์ผ ์์คํ ์ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ๋ณต์ฌํ๋ ๋ช ๋ น์ด
- CMD: ์ปจํ ์ด๋ ์คํ ์ ์คํํ ๋ช ๋ น์ ์ง์ ํ๋ ๋ช ๋ น์ด
# 1. FROM: ์ด๋ฏธ์ง์ ์์์ ์ง์
FROM python:3.9-slim
# 2. ENV: ํ๊ฒฝ ๋ณ์ ์ค์
ENV APP_HOME=/usr/src/app
ENV APP_ENV=production
# 3. WORKDIR: ์์
๋๋ ํฐ๋ฆฌ ์ง์
WORKDIR $APP_HOME
# 4. COPY: ๋ก์ปฌ ํ์ผ ์์คํ
์ ํ์ผ/๋๋ ํฐ๋ฆฌ๋ฅผ ์ปจํ
์ด๋๋ก ๋ณต์ฌ
COPY requirements.txt ./
COPY app.py ./
# 5. RUN: ํ์ํ ํจํค์ง ์ค์น
RUN pip install --no-cache-dir -r requirements.txt
# 6. CMD: ์ปจํ
์ด๋ ์์ ์ ์คํํ ๋ช
๋ น ์ง์
CMD ["python", "app.py"]
์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ค๋ฉด Dockerfile๊ณผ ํจ๊ป ์ด๋ฏธ์ง ์ด๋ฆ, ํจํค์ง์ ํ์ํ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐ๋ก ์ง์ ํด์ผ ํ๋ค.
docker image build --tag web-ping . ์ ํตํด Dockerfile ์คํฌ๋ฆฝํธ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์๋ค.
์ ๋ฒ ํฌ์คํธ์์ ์์ฑํ ๋์ปค ํ๋ธ์์ ๋ด๋ ค๋ฐ์ ์ด๋ฏธ์ง์ฒ๋ผ, ์ด๋ ๊ฒ ๋น๋๋ ์ด๋ฏธ์ง๋ ์ฌ์ฉํ ์ ์๋ค.
๋์ปค ์ด๋ฏธ์ง์๋ ํจํค์ง์ ํฌํจ์ํจ ๋ชจ๋ ํ์ผ์ด ๋ค์ด์๊ณ , ์ด ํ์ผ์ด ์ปจํ ์ด๋์ ํ์ผ ์์คํ ์ ํ์ฑํ๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ฉํ๋ฐ์ดํฐ ์ ๋ณด๋ ๋ค์ด๊ฐ๋ค.
docker image history web-ping ์ ํตํด ์ด๋ฏธ์ง ํ์คํ ๋ฆฌ๋ฅผ ํ์ธํ ์ ์๋ค,
๋์ปค ์ด๋ฏธ์ง๋ ์ด๋ฏธ์ง ๋ ์ด์ด๊ฐ ๋ชจ์ธ ๋ ผ๋ฆฌ์ ๋์์ด๊ณ , ๋ ์ด์ด๋ ๋์ปค ์์ง์ ์บ์์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋ ํ์ผ์ด๋ค. ์ด๋ฏธ์ง ๋ ์ด์ด๊ฐ ์ฌ๋ฌ ์ด๋ฏธ์ง์ ์ปจํ ์ด๋์์ ๊ณต์ ๋๋ค.
๋์ปค๋ ์ด๋ฏธ์ง ์ ์ฅ ์, ๊ฐ ๋ ์ด์ด๋ฅผ ์ค๋ณต ์ ์ฅํ์ง ์๊ณ ๊ณต์ ํจ์ผ๋ก์จ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฝํ๋๋ฐ, ๋์ผํ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง๋ค์ ์ด๋ฅผ ๊ณต์ ํ๊ธฐ์ ๋์คํฌ ์ฉ๋ ์๋ชจ๊ฐ ์ต์ํ ๋๋ค.
์ฆ, ๋ค๋ฅธ ์ด๋ฏธ์ง์ ๋ ์ด์ด๋ฅผ ๊ณต์ ํ๋ฉด ๋์คํฌ ์ฉ๋์ ๋ ์ฐจ์งํ๊ฒ ๋๋ค.
์ด๋ฏธ์ง ๋ชฉ๋ก์ SIZE๋ ์ด๋ฏธ์ง์ ๋ ผ๋ฆฌ์ ์ฉ๋์ผ๋ก ์ค์ ๋์คํฌ ์ฉ๋์ด ์๋๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด๋ฅผ ์ฌ๋ฌ ์ด๋ฏธ์ง๊ฐ ๊ณต์ ํ๋ฉด, ๊ณต์ ๋๋ ๋ ์ด์ด๋ ์์ ๋ ์ ์์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด ์ด๋ฏธ์ง ๋ ์ด์ด๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง๋ ๋ค. ์ฆ, ๋ ์ด์ด๋ ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ์ฌ์ฌ์ฉ๋์ง๋ง, ์ด๋ฅผ ์์ ํ ์๋ ์๋ค.
์ด๋ฏธ์ง๋ ์ด๋ฏธ์ง ๋ ์ด์ด ์บ์๋ฅผ ์ด์ฉํ์ฌ Dockerfile ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ ํ ํ ์ ์๋ค. ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๊ฐ ์ด์ ๋น๋์ ๊ฐ์ผ๋ฉด, ์บ์๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฌ์ฉํ๋ค. ์บ์์ ์ผ์นํ๋ ๋ ์ด์ด์ ์กด์ฌ์ ๋ฌด๋ฅผ ํ์ธํ๊ธฐ ์ํด ํด์๊ฐ์ ์ด์ฉํ๋ค.
Docker ์ด๋ฏธ์ง ๋ ์ด์ด ์บ์์ ์ต์ ํ
- ์ด๋ฏธ์ง ๋ ์ด์ด ์บ์๋?
Dockerfile์ ๊ฐ ๋ช ๋ น์ด๋ ๋ ์ด์ด๋ก ์ ์ฅ
Docker๋ ๊ฐ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๊ณ , ์ดํ ๋น๋ ์ ๋์ผํ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๊ฐ ์ด์ ๊ณผ ๊ฐ๋ค๋ฉด, ์บ์๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฌ์ฉ
์ด๋ก ์ธํด ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ์ง ์๊ณ , ๋ณ๊ฒฝ๋ ๋ช ๋ น์ด ์ดํ ๋จ๊ณ๋ง ์๋ก ๋น๋ํ๋ฏ๋ก ๋น๋ ์๊ฐ์ด ๋จ์ถ๋จ
2. ์บ์ ํ์ธ ๊ธฐ์ค
์บ์๋ ๋ช ๋ น์ด์ ๋ช ๋ น์ด์ ์ฌ์ฉ๋ ์ ๋ ฅ๊ฐ(์: ํ์ผ, ํ๊ฒฝ ๋ณ์ ๋ฑ)์ ํด์๊ฐ์ ๋น๊ตํ์ฌ ๊ฒฐ์
๋์ผํ ๋ช ๋ น์ด๋ฅผ ์คํํ๋๋ผ๋ ์ ๋ ฅ๊ฐ์ด ๋ฐ๋๋ฉด ์๋ก์ด ๋ ์ด์ด๊ฐ ์์ฑ๋๋ค.
3. ์ต์ ํ ๋ฐฉ๋ฒ
์์ฃผ ๋ณ๊ฒฝ๋๋ ๋ช ๋ น์ด๋ ํ์ผ์ Dockerfile์ ํ๋จ์ ๋ฐฐ์น
์บ์๋ฅผ ์ฌ์ฌ์ฉํ๋ ค๋ฉด ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์ ์ ๋ช ๋ น์ด๋ฅผ ์๋จ์ ๋ฐฐ์น
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋, Dockerfile ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ ํํ๊ณ , ์ด์์ฑ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด Dockerfile์ ๋ช ๋ น์ด๋ฅผ ์ ๋ฐฐ์นํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ๊ฐ์ ์ปจํ ์ด๋์์ ๋ฐ๋๋ก ํ๋ค.
'๐ณ์ธํ๋ผ > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Use Docker (0) | 2024.12.05 |
---|---|
Container&Docker (0) | 2024.12.04 |
๋น์ ๊ณต์๋ ์ดํดํ ์ ์๋ Docker ์ ๋ฌธ/์ค์ (1) (0) | 2024.09.21 |
์ฟ ๋ฒ๋คํฐ์ค (1) | 2024.09.11 |
์๋ฒ ๊ฐ์ํ (0) | 2024.09.06 |