ошибка на веб-сервере воздушного потока на основе postgres - PullRequest
0 голосов
/ 30 апреля 2020

В основном, я хочу построить docker -airflow:

У меня есть Dockerfile вроде:

FROM puckel/docker-airflow:1.10.6
COPY ./airflow_home/airflow.cfg /usr/local/airflow/airflow.cfg
...

У меня есть docker -compose.yml как:

version: "3.4"
services:
    postgres:
        image: "postgres:9.6"
        container_name: "postgres"
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow
        ports:
            - "5432:5432"
        volumes:
            - './data/postgres:/var/lib/postgresql/data'
    # comment initdb after you will have use it at first run
    # set the client and processed log types here
    initdb:
        build: .
        entrypoint: airflow initdb
        entrypoint:
            ['python3', '/usr/local/airflow/__init__.py', '-C', '$Client', '-T', '$Types']
        volumes:
            - './airflow_home/packages:/usr/local/airflow/packages'
        depends_on:
            - postgres

И в файле require.txt нет другой библиотеки воздушного потока.

Я всегда получал сообщение об ошибке:

docker-compose up webserver

Ошибка:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "connection" does not exist
webserver_1  | LINE 2: FROM connection GROUP BY connection.conn_id

«xxx» также включает в себя log .

Первоначально я думал, что ошибка возникнет в разных версиях. Но я уверен, что версия была подтверждена правильно. Я использовал airflow.cfg из той же версии и изменил sql_connection с помощью Postgres. База данных в Postgres также была создана. Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 04 мая 2020

Я нашел причину. Потому что я использовал две точки входа в initdb части. Он перезапишет оригинальный скрипт инициализации внутри docker. Когда я удаляю точку входа:

['python3', '/usr/local/airflow/__init__.py', '-C', '$Client', '-T', '$Types']

Это работает сейчас.

...