将Docker映像部署到Heroku时出现R10错误

时间:2020-05-29 17:53:45

标签: docker heroku

在尝试将包含简单流式应用程序的Docker映像部署到Heroku时,我遇到了一些麻烦的问题。我的问题是,部署后我无法访问我的Docker。仔细观察,我发现了以下错误:

错误R10(引导超时)-> Web进程在启动后60秒内未能绑定到$ PORT

我已经研究并了解到这是因为该端口不可用,因为Heroku将动态分配端口号。

通过放置以下Dockerfile,我确保不会发生这种情况。

Dockerfile:

FROM python:3.7
COPY . /app
WORKDIR /app
RUN pip install streamlit
ENTRYPOINT ["streamlit","run", "--server.enableCORS", "false" ,"--server.port", "$PORT"]
CMD ["app.py"]

我现在可以看到网络URL和外部URL端口号是由Heroku分配的,因为它不是典型的5901号。

但是,令我困惑的是为什么容器无法绑定到给定的动态端口号?我以为该应用将使用给定的动态数字?

1 个答案:

答案 0 :(得分:2)

问题在于,在Heroku Docker注册表上执行Docker运行时,$PORT未被替换为相应的环境变量。

一种替代方法是创建一个调用.sh脚本的Docker文件

FROM python:3.7 
COPY . /app 
WORKDIR /app 
RUN pip install streamlit


ENTRYPOINT "/startup.sh"

和startup.sh

echo PORT $PORT
streamlit run --server.enableCORS false --server.port $PORT app.py