textClassifierAPI / Dockerfile
hiddenFront's picture
Update Dockerfile
041f67a verified
raw
history blame
2.42 kB
# Python 3.9 Slim ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
FROM python:3.9-slim
# ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ ์„ค์น˜
# apt-get update: ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ
# git: GitHub ์ €์žฅ์†Œ ํด๋ก ์— ํ•„์š”
# build-essential: C/C++ ์ปดํŒŒ์ผ๋Ÿฌ (gcc, g++ ๋“ฑ) ๋ฐ ๊ธฐํƒ€ ๋นŒ๋“œ ๋„๊ตฌ ํฌํ•จ
# curl: Rust ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ์šฉ
# libffi-dev, libssl-dev: ์ผ๋ถ€ Python ํŒจํ‚ค์ง€(์˜ˆ: cryptography) ๋นŒ๋“œ ์‹œ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
build-essential \
curl \
libffi-dev \
libssl-dev \
&& rm -rf /var/lib/apt/lists/* # apt ์บ์‹œ ์ •๋ฆฌํ•˜์—ฌ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ค„์ด๊ธฐ
# Rust ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์น˜ (tokenizers ๋นŒ๋“œ์šฉ)
# rustup์€ Rust ๋„๊ตฌ ์ฒด์ธ ๊ด€๋ฆฌ์˜ ๊ณต์‹์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
# -y: ๋ชจ๋“  ํ”„๋กฌํ”„ํŠธ์— 'yes'๋กœ ์ž๋™ ์‘๋‹ต
# --default-toolchain stable: ์•ˆ์ •์ ์ธ ์ตœ์‹  ํˆด์ฒด์ธ ์„ค์น˜
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
# Rust์˜ ์‹คํ–‰ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€
# rustup์€ ๊ธฐ๋ณธ์ ์œผ๋กœ /root/.cargo/bin์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
ENV PATH="/root/.cargo/bin:${PATH}"
# ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
WORKDIR /app
# ์ „์ฒด ์ฝ”๋“œ ๋ณต์‚ฌ (requirements.txt, main.py, .pkl ํŒŒ์ผ ๋“ฑ)
COPY . .
# Python ํŒจํ‚ค์ง€ ์„ค์น˜
# pip ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์‹  pip์ด wheel ํŒŒ์ผ์„ ์ž˜ ์ฐพ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
RUN pip install --no-cache-dir --upgrade pip
# ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ํ•œ ๋ฒˆ์— ์„ค์น˜ํ•˜์—ฌ ์˜์กด์„ฑ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# --no-cache-dir: ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
RUN pip install --no-cache-dir \
fastapi \
uvicorn \
torch==1.13.1 \
transformers==4.30.2 \
tokenizers==0.13.3 \
sentencepiece \
numpy==1.23.5 \
protobuf==3.20.3 \
psutil \
gluonnlp==0.10.0 \
mxnet-mkl==1.6.0 \
huggingface_hub \
git+https://github.com/SKTBrain/KOBERT#egg=kobert_tokenizer\&subdirectory=kobert_hf # ์ด ๋ถ€๋ถ„์„ kobert_hf๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
# FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
# --host 0.0.0.0: ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ ‘๊ทผ ํ—ˆ์šฉ
# --port 7860: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜์‹ ํ•  ํฌํŠธ (Render๋Š” $PORT ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, Dockerfile์—์„œ๋Š” ๊ณ ์ • ํฌํŠธ ์„ค์ •)
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]