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

Docker-Compose部署遇host not found及entrypoint.sh错误排查

问题分析与解决方案

错误1:app容器启动失败,提示exec /scripts/entrypoint.sh: no such file or directory

排查方向

  • 脚本路径不匹配:Dockerfile或docker-compose中,要么没把脚本复制进镜像,要么本地挂载路径与容器内路径对应错误
  • 脚本缺少执行权限:entrypoint.sh没有x权限,容器无法执行该脚本
  • 脚本未被复制到镜像:Dockerfile的COPY/ADD命令写错,未将本地脚本复制到容器指定路径

解决步骤

  1. 核对Dockerfile:确保存在COPY entrypoint.sh /scripts/这类命令,将本地脚本准确复制到容器内的/scripts目录
  2. 添加执行权限:要么在Dockerfile中加入RUN chmod +x /scripts/entrypoint.sh,要么本地先执行chmod +x entrypoint.sh再构建镜像
  3. 检查挂载配置:如果使用volume挂载脚本(比如./scripts:/scripts),确认本地./scripts目录下确实存在entrypoint.sh,路径完全对应

错误2:proxy容器报错nginx: [emerg] host not found in upstream "app"

排查方向

  • 核心原因是app容器启动失败,Docker网络中找不到app服务实例
  • 即便配置了depends_on,它仅控制启动顺序,不会等待app完全就绪,但此处app直接退出,根源还是第一个错误
  • proxy与app不在同一Docker网络中,导致无法解析app主机名

解决步骤

  1. 先彻底解决第一个错误,确保app容器能正常启动运行
  2. 配置自定义网络:在docker-compose-deploy.yml中添加自定义网络,让两个服务都加入,示例代码:
networks:
  app-net:
    driver: bridge

services:
  app:
    # 其他配置...
    networks:
      - app-net
  proxy:
    # 其他配置...
    networks:
      - app-net
  1. 可选优化:给nginx的upstream配置添加重试逻辑,避免偶发就绪延迟,比如:
upstream app {
    server app:8080 max_fails=3 fail_timeout=30s;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:15:32