#python #docker #airflow
#питон #докер #воздушный поток
Вопрос:
Я запускаю airflow из образа docker под названием puckel / docker-airflow. Я синхронизировал свою локальную папку dag с папкой container airflow при запуске контейнера с помощью следующей команды docker:
docker run -d -p 8080:8080 -v <local_path>:/usr/local/airflow/dags puckel/docker-airflow webserver
В моей базе данных у меня есть a PythonOperator
, которая вызывает функцию с именем start_script
, эта функция в основном считывает и инициализирует файлы для извлечения некоторой информации (например, паролей).
Функция выглядит следующим образом:
def start_script():
config_parser = configparser.RawConfigParser()
config_parser.read("C:/dags/file.ini")
pwd= config_parser.get("LOGS", "pwd")
Когда я запускаю эту функцию локально, функция может прочитать файл и ввести пароль, к сожалению, когда я запускаю в docker с помощью тестовой команды dag, она возвращает следующую ошибку:
configparser.NoSectionError: No section: 'LOGS'
Каков правильный способ вызова файлов на моем локальном компьютере из контейнера?
Я действительно думаю, что когда я запускаю функцию в контейнере, функция не распознает путь, который должен прочитать config_parser.
Спасибо, что уделили мне время!
Комментарии:
1. Используете ли вы /usr/local/airflow/dag/file.ini в качестве пути к конфигурации в Docker?
2. /usr/local/airflow/dag — это стандартный путь dag для puckel/ docker-airflow. Я не знаю, как проверить, каков путь к конфигурации. Не могли бы вы сообщить, какова команда для его проверки?
3. Что
<local_path>
в вашей команде?4. <local_path> — это папка, в которой я сохраняю свои базы данных на своем компьютере: C:/dags
Ответ №1:
Внутри контейнера вы должны указать на файл конфигурации в подключенном томе, поэтому измените config_parser.read("C:/dags/file.ini")
на config_parser.read("/usr/local/airflow/dags/file.ini")
.