You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Podman运行挂载目录sh脚本报错:No such file or directory

问题解决方案

1. 修正脚本Shebang行(最常见原因)

Alpine Linux默认未预装bash,如果你的package.sh开头是#!/bin/bash,容器会因找不到bash而抛出误导性的“文件不存在”错误。

解决方式二选一:

  • 修改脚本首行为#!/bin/sh(Alpine默认shell是ash,完全兼容sh语法)
  • 在Dockerfile中添加bash安装:
    FROM python:3.12-alpine
    
    RUN apk update && apk add zip bash libpq-dev build-base
    RUN /usr/local/bin/python -m pip install --upgrade pip
    

2. 转换脚本换行符格式

如果脚本在Windows环境下编辑,换行符是CRLF(\r\n),而Linux容器仅识别LF(\n),会导致执行时把\r当作路径的一部分,触发错误。

解决方式二选一:

  • 本地执行dos2unix local-scripts/package.sh转换格式
  • 在容器内先转换再执行,修改Makefile命令:
    @podman build -t python-alpine-local -f local-scripts/Dockerfile .
    @podman run -v ${PWD}:/app localhost/python-alpine-local sh -c "dos2unix /app/local-scripts/package.sh && /app/local-scripts/package.sh"
    
    同时在Dockerfile中添加dos2unix依赖:
    RUN apk update && apk add zip dos2unix libpq-dev build-base
    

3. 添加脚本执行权限

本地脚本可能缺少可执行权限,挂载到容器后会继承该属性:

chmod +x local-scripts/package.sh

4. 验证路径与文件状态

可临时修改Makefile命令,先确认文件存在性与权限:

@podman run -v ${PWD}:/app localhost/python-alpine-local ls -l /app/local-scripts/

确认package.sh存在且权限包含x(可执行)后,再执行原脚本命令。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:52:35