6af83d23fe21d8a1a55ff68d32f9ed7b3c4da6d9bf032f26e8ccd3f56528e133 docker:来自守护进程的错误响应:无法为容器创建任务:无法创建 shim 任务:OCI 运行时创建失败:runc 创建失败:无法启动容器进程:exec:“streamlit”:在 $PATH 中找不到可执行文件:未知。 错误:进程已完成,退出代码为 127。
FROM python:3.8-slim-buster
EXPOSE 8501
RUN apt-get update && apt-get install -y \
build-essential \
software-properties-common \
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . /app
RUN pip3 install -r requirements.txt
# Use RUN command to print the $PATH environment variable
RUN echo $PATH
# ENTRYPOINT [ "streamlit","run","app.py","--server.port=8501","--server.address=0.0.0.0" ]
CMD ["/usr/local/bin/streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
当我在本地构建 Docker 映像时一切正常,但在部署过程中失败
我怀疑这里的问题与你如何安装Python包有关。您确定您的存储库中的
requirements.txt
包含 streamlit
吗?
假设您的项目如下所示:
├── app.py
├── Dockerfile
└── requirements.txt
并且
requirements.txt
包含(您的版本可能有所不同):
streamlit==1.32.2
您不需要指定
streamlit
可执行文件的绝对路径,因为如果它安装成功,那么它已经在您的路径上。
FROM python:3.8-slim-buster
EXPOSE 8501
RUN apt-get update && \
apt-get install -y \
build-essential \
software-properties-common \
git && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt /app
RUN pip3 install -r requirements.txt
COPY . /app
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
我已经对此进行了测试,它在本地和 GitHub Actions 上都有效。可以肯定的是,您应该查看 GitHub Actions 上的日志,您应该能够在其中看到
pip3 install -r requirements.txt
步骤并见证它正在(或没有!)安装 streamlit
包。