본문 바로가기

server/docker

airflow ModuleNotFoundError: No module named 'slacker’

문제점

airflow를 docker-compose로 관리하며 사용중이며 python 패키지를 추가해야하는데,

docker 빌드시 requirement.txt에 패키지를 추가 했지만 airflow에서는 설치가 안되엇다고 계속 에러 메시지가 뜬다.

심지어 도커 빌드시 설치가 되는것을 확인했다!!!

 

dockerfile에서 설치하려는 나의 노력을 볼수있다! 하지만 소용이 없었다.

FROM apache/airflow:2.1.3
USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
         openjdk-11-jre-headless \
  && apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* \

USER airflow
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64


COPY requirements.txt /tmp/
RUN python3 -m pip install --upgrade pip -q
RUN python3 -m pip install -r /tmp/requirements.txt -q
RUN python3 -m pip install slacker==0.14.0
RUN pip3 install --no-cache-dir slacker==0.14.0

 

 

해결

docker-compose 파일에서 해결이 가능하다!!

airflow 2.3.2  버전부터 _PIP_ADDITIONAL_REQUIREMENTS 지원하는 명령어로 해당 명령어 뒤에 패키지 명을 써주면 docker-compose init시 자동으로 설치된다!!

 

예시

_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-slacker}

 

추가를 하고 싶다면 뒤에 계속해서 붙여주면 된다.

_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-slacker apache-airflow-providers-oracle apache-airflow-providers-microsoft-mssql}

 

실행해보면 정상적으로 설치 된것을 확인 할 수 있다

 

끝!

 

 

참고

https://stackoverflow.com/questions/67851351/cannot-install-additional-requirements-to-apache-airflow

https://github.com/apache/airflow/discussions/24809

'server > docker' 카테고리의 다른 글

로그가 서버를 죽이러 왔다.  (1) 2021.06.02