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

Docker Compose部署Sendy容器失败:路径不存在问题求助

解决Portainer部署Sendy容器的路径找不到问题

问题根源

错误里的/data/compose/126/var/docker/project-sendy是Portainer内部的映射路径,说明你的Docker Compose文件里的build上下文路径配置错误,导致Portainer无法在它的工作目录下定位到你的Sendy项目文件。

具体修复步骤

1. 修正Docker Compose的Build上下文

不要在Compose文件里写服务器的绝对路径(比如/var/docker/project-name),改用相对路径(相对于Compose文件所在的目录)。因为Portainer部署栈时会把你上传的项目文件映射到它内部的目录,绝对路径会导致它找不到文件。

正确的Compose配置示例(适配外部数据库):

version: '3.8'
services:
  sendy:
    build: .  # 用当前目录作为构建上下文,Portainer会自动处理路径映射
    ports:
      - "80:80"  # 根据你的需求调整端口
    environment:
      # 外部数据库配置,替换成你的实际信息
      DB_HOST: 你的外部数据库地址
      DB_NAME: 你的Sendy数据库名
      DB_USER: 数据库用户名
      DB_PASS: 数据库密码
      # Sendy基础配置
      APP_URL: http://你的域名或服务器IP
      FROM_EMAIL: 你的发件邮箱

2. 正确上传项目文件到Portainer

  • 把你的docker-compose.yml、Dockerfile和sendy-6.0.2.zip打包成一个zip文件。
  • 在Portainer的「部署栈」页面,选择「上传」选项,上传这个zip包,而不是单独粘贴Compose内容。这样Portainer会自动把所有文件放到正确的映射目录里,避免路径错误。

3. 验证本地文件结构

确认你的服务器上/var/docker/project-name目录的文件结构完全正确(大小写敏感):

/var/docker/project-name/
├── docker-compose.yml
├── Dockerfile
└── sendy-6.0.2.zip

同时检查Dockerfile里的解压命令,确保它能正确找到zip文件,比如:

COPY sendy-6.0.2.zip /tmp/
RUN unzip /tmp/sendy-6.0.2.zip -d /var/www/html/ && rm /tmp/sendy-6.0.2.zip

4. 清理Portainer旧缓存

如果之前部署过错误的栈,先删除该栈,然后手动清理Portainer的对应缓存目录(比如/data/compose/126/,这里的126是你的栈ID,替换成实际ID),再重新部署。

额外注意点

  • 确保外部数据库已经允许你的服务器IP访问,检查数据库的防火墙白名单和权限设置。
  • 部署前可以先在服务器本地用docker-compose build测试构建,确认没有路径问题,再用Portainer部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:55:38