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

Windows环境下Docker部署Django服务提示wait-for-postgres.sh找不到求助

针对Django容器找不到wait-for-postgres.sh的解决方案

以下是几个可尝试的解决方向,按优先级排序:

  • 改用绝对路径调用脚本
    把entrypoint.sh第4行的./wait-for-postgres.sh替换为容器内的绝对路径/app/wait-for-postgres.sh。相对路径失效大概率是因为容器启动时的工作目录不是/app,可在entrypoint.sh开头先切换工作目录:

    cd /app || exit 1
    
  • 确认脚本权限与挂载状态

    1. 进入后端容器执行命令,检查文件存在性与权限:
      docker exec -it <你的后端容器ID/名称> ls -l /app
      
      需确认列表中存在wait-for-postgres.sh,且权限列包含x(可执行权限)。
    2. 如果权限不足,在本地给脚本添加可执行权限:
      chmod +x wait-for-postgres.sh
      
      或者在entrypoint.sh调用脚本前先赋予权限:
      chmod +x /app/wait-for-postgres.sh
      
  • 排查Docker挂载与构建问题

    • 如果是通过docker-compose挂载本地目录,确认volumes配置是否正确映射了包含脚本的本地目录到容器的/app。比如本地脚本在当前目录,配置应为:
      volumes:
        - ./:/app
      
    • 如果是构建镜像时包含脚本,检查Dockerfile是否有正确的COPY指令,避免构建时遗漏文件:
      COPY wait-for-postgres.sh /app/
      
  • Windows路径特殊处理
    Windows下Docker的文件系统兼容性可能导致路径解析异常,可尝试:

    1. 确保wait-for-postgres.sh的文件名无大小写错误(Linux容器区分大小写,Wait-For-Postgres.sh和wait-for-postgres.sh会被判定为不同文件)。
    2. 在docker-compose.yml中使用Windows绝对路径挂载,比如:
      volumes:
        - C:/path/to/your/project/backend:/app
      

若以上方法均无效,请提供以下信息进一步排查:

  • 后端服务的docker-compose.yml完整配置
  • entrypoint.sh的全部内容
  • 容器启动时的完整错误日志
  • 执行docker inspect <后端容器ID>的输出片段(重点看Mounts部分)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:20:36