在图像redhat/ubi8上安装气流-无法连接到postgres



由于基于python:3.8-slim-buster的映像上存在操作系统漏洞,我正在尝试基于redhat ubi8映像进行构建。

我用以下dockerfile成功构建了图像:

FROM registry.access.redhat.com/ubi8/python-38:1-107
ARG AIRFLOW_VERSION=2.4.1
ARG AIRFLOW_USER_HOME=/usr/local/airflow
ENV AIRFLOW_HOME=${AIRFLOW_USER_HOME}
RUN pip install -U pip setuptools wheel && 
pip install 'apache-airflow[crypto,celery,postgres,hive,jdbc]==2.4.1' 
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.4.1/constraints-3.8.txt"

COPY bin/start.sh /start.sh
COPY airflow/airflow.cfg /usr/local/airflow/airflow.cfg
USER root
RUN useradd -ms /bin/bash -d /usr/local/airflow airflow && 
chown -R airflow: /usr/local/airflow && 
chown -R airflow: /opt/app-root
USER airflow
COPY airflow/dags /usr/local/airflow/dags
COPY requirements.txt /tmp/requirements.txt
COPY entrypoint.sh /entrypoint.sh
RUN /entrypoint.sh install
SHELL ["/bin/bash", "-c"]
EXPOSE 8080 5555 8793
USER airflow
WORKDIR ${AIRFLOW_USER_HOME}
ENTRYPOINT /entrypoint.sh start

然而,当我尝试在与之前基于debian的映像相同的docker compose设置中运行新映像时,我的容器无法连接到postgresql数据库。

它似乎试图连接到postgres数据库:AIRFLOW__CORE_SQL_ALCHEMY_CONN=postgresql+psycopg2://气流:airflow@label-postgres:5432/气流它被困在等待中:等待Postgres(标签Postgres:5432(。。。4/20

这不是docker compose的配置问题,DB可以从容器中完全访问。以前基于Debian的图像构建,在相同的设置下工作时没有问题。

有人知道Redhat是否有某些特定行为阻碍了连接吗?或者如果我的档案有问题?

这在Dockerfile中修复了它:

yum install -y nc

连接问题是由于基本映像上没有netcat。在连接到DB Airflow之前,尝试使用netcat获取数据库,如果命令不可用,它不会返回错误,只是说它正在等待数据库

最新更新