如何解决使用Docker和Cloud Run部署dbt的正确方法
我正在尝试在具有Docker容器的Google云运行服务上部署dbt。紧接着david vasquez和dbt
Docker images之后,当尝试将构建的映像部署到云运行时。我遇到了错误。
ERROR: (gcloud.run.deploy) Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.
这是我的dockerfile
FROM python:3.8.1-slim-buster
RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends git software-properties-common make build-essential ca-certificates libpq-dev && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY requirements/requirements.0.17.0rc4.txt ./requirements.0.17.0rc4.txt
RUN pip install --upgrade pip setuptools
RUN pip install -U pip
RUN pip install dbt==0.17.0
RUN pip install --requirement ./requirements.0.17.0rc4.txt
RUN useradd -mU dbt_user
ENV PYTHONIOENCODING=utf-8
ENV LANG C.UTF-8
ENV PORT = 8080
ENV HOST = 0.0.0.0
WORKDIR /usr/app
VOLUME /usr/app
USER dbt_user
CMD ['dbt','run']
我了解运行状况检查失败,因为它无法找到要监听的端口,除非我在ENV
中指定了一个端口
有人可以帮助我解决问题吗?提前谢谢
解决方法
根据documentation,在Cloud Run上部署应用程序的要求之一是在0.0.0.0
上侦听请求并公开端口:
容器必须在将请求发送到的端口上的0.0.0.0上侦听请求。默认情况下,请求发送到8080,但是您可以配置Cloud Run将请求发送到您选择的端口。
dbt
是command line tool,表示它不公开任何PORT,因此,当您尝试部署Cloud Run时,它会验证构建是否正在侦听,并会由于上述错误而失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。