• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (106)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (24)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • 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'

       

      얼핏 봐도 권한 문제인 걸 확인할 수 있고, 이를 해결하기 위해 다양한 시도를 해봤습니다.

       

      1. `logs/` 폴더의 권한을 755로 변경하기
      2. `logs/` 폴더의 소유자를 root로 변경하기
      3. 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바