当我试图部署我的Docker映像时,我遇到了一些问题,它包含了一个简单的流光应用程序到Heroku。我的问题是部署后我无法访问我的Docker。仔细看一下,我发现了以下错误:
Error R10 (Boot ) -> 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号。
然而,令我困惑的是,为什么容器不能绑定到给定的动态端口号?我以为应用程序会使用给定的动态编号?
发布于 2020-05-29 11:22:59
问题是,在Heroku上执行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
https://stackoverflow.com/questions/62091936
复制