bash: gunicorn: command not found

hyuckhoon.ko·2023년 1월 9일
0

도커파일에 멀티스테이지 빌드를 적용한 후, 아래와 같은 에러가 발생했다.

bash: gunicorn: command not found

하지만, gunicorn 패키지를 설치했으며 그 뿐만 아니라 django, mysqlclienet 등 모든 패키지들 역시 설치되지 않았다.


멀티스테이지 빌드에서 주의할 점이 있다.
COPY --from=dependency /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
만으로는 부족하다.
아래 코드가 Dockerfile에 추가돼야 한다.

COPY --from=dependency /usr/local/bin /usr/local/bin


멀티스테이지 빌드가 적용된 최종 Dockerfile은 아래와 같다.

FROM python:3.9.6-slim-buster as builder
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    default-libmysqlclient-dev \
    tk

FROM python:3.9.6-buster as dependency
COPY requirements.txt ./tmp
RUN pip install --upgrade pip && pip install --no-cache-dir -r /tmp/requirements.txt

FROM python:3.9.6-slim-buster
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
EXPOSE 8000
RUN mkdir -p /web/ && adduser --no-create-home --shell /bin/false --disabled-password --gecos '' user  \
    && chown user:user /web
WORKDIR /web/
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=dependency /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
COPY --from=dependency /usr/local/bin /usr/local/bin
COPY --chmod=755 --chown=user:user web deploy/entrypoint.sh ./
USER user
CMD ./entrypoint.sh

0개의 댓글