Streamlit官方Docker模板在OpenShift中出现run.sh权限拒绝问题
Streamlit K8s部署容器启动权限错误解决
核心问题1:run.sh 无执行权限
你本地复制的run.sh文件被COPY到容器后,没有设置可执行权限,导致容器启动时无法执行该脚本。官方原模板依赖git克隆仓库,仓库内的run.sh本身带有可执行权限,所以没有这个问题,而你替换成本地复制后缺失了权限配置。
修复方式:在Dockerfile中添加赋予执行权限的命令:
COPY run.sh /home/appuser RUN chmod +x ./run.sh # 新增这行,给脚本添加可执行权限 ENTRYPOINT ["./run.sh"]
核心问题2:run.sh 文件存在语法错误
你的run.sh末尾多了一行重复的#!/bin/bash,这会导致脚本执行逻辑异常,需要删除这行多余内容。修正后的run.sh末尾部分应为:
streamlit run ${HOME}/app/main.py & APP_ID=${!} wait ${APP_ID}
额外检查项
- 无需纠结本地文件权限,通过Dockerfile中的
chmod +x命令可以确保容器内脚本拥有执行权限。 - 确认
appuser对/home/appuser/run.sh拥有读权限,默认COPY后的文件权限已经满足,无需额外调整。
内容的提问来源于stack exchange,提问作者teq508
相关产品推荐
相关产品推荐

