실습환경 : 윈도우 내 리눅스(우분투)
Poetry의 기능
- 의존성 관리: Poetry는 프로젝트의 모든 의존성을 한 곳에서 관리할 수 있습니다. 의존성을 설치, 업데이트, 제거하는 작업을 쉽게 수행할 수 있습니다.
- 가상환경 관리: Poetry는 각 프로젝트마다 가상환경을 자동으로 생성하고 관리합니다. 이를 통해 의존성 충돌을 피하고, 프로젝트 간 독립성을 유지할 수 있습니다.
- 패키징 및 배포: Poetry는 프로젝트를 패키징하고 배포하는 과정을 간단하게 처리할 수 있습니다. pyproject.toml 파일에 정의된 정보를 바탕으로 패키징을 수행합니다.
requirements 시럽자..
Poetry 설치방법
- 프로젝트 이름을 에어플로우로 하고 폴더 만듦
$ mkdir airflow - airflow 폴더로 이동
$ cd airflow - poetry 설치
$ curl -sSL https://install.python-poetry.org | python3 -
또는
$ pip install poetry
로 설치 - poetry 초기설정
$ poetry init
설정은 크게 할건 없고 대충 읽어보고 하면된다. 단 파이썬 버전은 ^3.8로 했다.
예전에 airflow 2.7.3과 python 3.8로 했을때 무리 없이 잘된던 기억 때문에.
(나머지 설정 모르겠으면 GPT 검색)
-> 설정 완료시 모듈 이름과 버전이 적힌 pyproject.toml 파일이 생긴다. - poetry.lock 생성
아무 모듈이나 처음 설치하면 생성된다. 예를 들어
$ poetry add requests
-> 기존의 pip install requests 명령어와 같은 역할이라 보면된다. 다만 버전이 충돌나지 않게 알아서 설치해준다.
Dockerfile에 poetry 설치 내용 삽입
FROM apache/airflow:2.7.3
USER root
RUN apt-get update && apt-get install -y openssh-client
USER airflow
WORKDIR /app
COPY pyproject.toml poetry.lock /app/
RUN pip install poetry && poetry install
COPY . /app
- 위와 같이 생성했던 pyproject.toml, poetry.lock 두 파일을 컨테이너 내부로 이동 시킨 뒤 설치
- docker-compose.yaml 파일은 아래 명령어로 받음
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.3/docker-compose.yaml'yaml 파일 - yaml 파일 고친부분
현재 폴더에 있는 도커파일로 빌드하게 함
# image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.3}build: . - 이미지 빌드후 컨테이너 올림
$ docker-compose up --build - poetry shell에 접속해 여기서도 설치된지 확인
$ poetry shell
Spawning shell within /home/weare/.cache/pypoetry/virtualenvs/airflow-IEpSry0b-py3.10
(airflow-IEpSry0b-py3.10) $ pip show requests
Name: requests
Version: 2.32.3
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache-2.0
Location: /home/weare/.cache/pypoetry/virtualenvs/airflow-IEpSry0b-py3.10/lib/python3.10/site-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by:
(airflow-IEpSry0b-py3.10) - pyproject.toml 파일 열어서 제대로 설치된지 확인
-> 잘 설치 돼있다.
[tool.poetry]
name = "airflow"
version = "0.1.0"
description = ""
authors = ["bgh <makenow90@gmail.com>"]
[tool.poetry.dependencies]
python = "^3.8"
DateTime = "^5.5"
requests = "^2.32.3"
selenium = "^4.21.0"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
진행하며 생겼던 오류 : https://makenow90.tistory.com/2
결론
poetry 모듈 의존성 관리의 신세계. requirements.txt 아웃!
그러나 컨테이너에 poetry를 설치하는데는 성공했지만, 도커 내에 poetry 가상환경을 만든꼴이 됐다.
즉 dag 실행 시마다 가상 환경을 활성화 해야 한다.
아래는 좀 더 정상적인 형태로 poetry는 의존성 관리에만 사용하고, 도커 내에서는 가상 환경을 실행하지 않는 방법이다.
(dockerfile 작성에 관한한 아래 내용을 꼭 참조할 것)
https://makenow90.tistory.com/29
'다용도 로컬 파이프라인 구성' 카테고리의 다른 글
Poetry + 도커컨테이너 모듈 의존성 간편화2 (2) | 2024.07.16 |
---|---|
airflow.cfg 상세 분석 (0) | 2024.07.01 |
도커 컨테이너에서 외부 셀레니움 실행 3 (0) | 2024.06.23 |
도커 컨테이너에서 외부 셀레니움 실행 2 (0) | 2024.06.15 |
도커 컨테이너에서 외부 셀레니움 실행 1 (0) | 2024.06.13 |