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

R10将Docker映像部署到Heroku时出错,docker,heroku,Docker,Heroku,我在尝试将我的Docker映像(其中包含一个简单的Streamlight应用程序)部署到Heroku时遇到了一些初期问题。我的问题是部署后无法访问Docker。仔细看,我发现了以下错误: 错误R10(启动超时)->Web进程在启动后60秒内绑定到$PORT失败 我已经研究并了解到这是因为端口不可用,因为Heroku将动态分配端口号 我把下面的文档放在我的Dockerfile中,以确保这不会发生 Dockerfile: 我现在可以看到网络URL和外部URL端口号是由Heroku分配的,因为它不是典

我在尝试将我的Docker映像(其中包含一个简单的Streamlight应用程序)部署到Heroku时遇到了一些初期问题。我的问题是部署后无法访问Docker。仔细看,我发现了以下错误:

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

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

我把下面的文档放在我的Dockerfile中,以确保这不会发生

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


然而,让我困惑的是,为什么容器无法绑定到给定的动态端口号?我以为应用程序会使用给定的动态数字

问题是在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

问题是在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

测试的解决方案在没有ENTRYPOINTUSER的情况下工作,因为它不存在于dockerfile中。测试的解决方案在没有ENTRYPOINTUSER的情况下工作,因为它不存在于dockerfile中。