• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (109)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (25)
      • 기타 (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를 변경해주는 스크립트입니다.

      '개발' 카테고리의 다른 글

      .pyc 파일  (0) 2025.06.10
      DB Lock을 처음 경험한 날  (0) 2025.03.18
      LATERAL JOIN에 대해 알아보자.  (0) 2025.03.17
      SQLAlchemy와 psycopg2 중 어느 것을 사용할까?  (0) 2025.03.06
      Pandas의 벡터 연산  (0) 2025.03.06
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바