- Airflow 컨테이너를 새로운 우분투 유저로 올리면서 생긴 일2025년 05월 12일
- 31514
- 작성자
- 2025.05.12.:51
우분투 서버에 새로운 유저를 만들고, Airflow 컨테이너를 올리는 과정에 겪은 문제를 기록합니다.
rootless-docker를 사용했고, 유저명은 niscom입니다.
먼저 Airflow 공식 홈페이지에서 docker-compose.yaml 파일을 다운로드 받습니다.
저는 2.9.1 버전을 선택했고, Playwright 라이브러리를 사용해야 했기 때문에 `build .` 주석 처리를 해제합니다.
Airflow docker-compose.yaml 파일을 살펴보면 user와 관련된 설정이 있는데, Airflow UID:GID로 구성되어 있습니다.
새로운 유저로 아무런 설정 없이 `docker compose up -d`를 실행하면 다음과 같은 오류가 발생합니다.
airflow-scheduler-1 | PermissionError: [Errno 13] Permission denied: '/opt/airflow/logs/dag_processor_manager/dag_processor_manager.log'
얼핏 봐도 권한 문제인 걸 확인할 수 있고, 이를 해결하기 위해 다양한 시도를 해봤습니다.
- `logs/` 폴더의 권한을 755로 변경하기
- `logs/` 폴더의 소유자를 root로 변경하기
- airflow docker-compose.yaml 파일에서 user UID를 niscom 유저 id로 변경하기
하지만 결국 해결되지 않았고, 문제를 각 폴더의 GID라는 것을 알게 되었습니다.
이를 위해 다음과 같은 스크립트를 작성했습니다.
#!/bin/bash # 현재 UID / GID 확인 AIRFLOW_UID=$(id -u) AIRFLOW_GID=$(id -g) # .env 파일 생성 또는 업데이트 echo "AIRFLOW_UID=${AIRFLOW_UID}" > .env # 폴더 목록 dirs=("logs" "dags" "plugins" "data") # 각 폴더가 없다면 생성하고, 소유권 변경 for dir in "${dirs[@]}"; do mkdir -p "$dir" sudo chown -R "${AIRFLOW_UID}:${AIRFLOW_GID}" "$dir" done echo ".env 및 디렉토리 권한 설정 완료 ✅" docker compose up -d echo "Airflow 컨테이너 실행 완료 ✅"
위 스크립트는 Airflow가 사용하는 각 폴더의 유저 ID와 그룹 ID를 변경해주는 스크립트입니다.
'개발' 카테고리의 다른 글
DB Lock을 처음 경험한 날 (0) 2025.03.18 LATERAL JOIN에 대해 알아보자. (0) 2025.03.17 SQLAlchemy와 psycopg2 중 어느 것을 사용할까? (0) 2025.03.06 Pandas의 벡터 연산 (0) 2025.03.06 Chunk를 사용하여 대용량 파일 전송하기 (0) 2025.01.17 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)