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

如何在Dokku中使用Docker Compose?Matomo升级后Nginx 404求助

嘿,我来帮你解决这个Dokku部署新版Matomo的问题——我之前也踩过类似的坑,尤其是Dokku和Docker Compose配合的误区,咱们一步步来理清楚:

首先搞懂核心误区:Dokku不直接认普通的docker-compose.yml

你把docker-compose.yml放在仓库根目录没效果,是因为Dokku本身不支持直接解析标准的docker-compose配置,它有自己的部署逻辑和插件体系。那个issue里提到的traefik配置是针对用Traefik做反向代理的场景,而Dokku用的是自带的Nginx反向代理,所以那套配置对你不适用。

方案1:用Dokku原生方式部署(更简单,推荐)

放弃docker-compose,直接用Dokku的原生流程来部署新版Matomo:

  1. 修正你的Dockerfile
    确保它拉取最新镜像并正确暴露端口(新版crazy-max/matomo默认用Apache,暴露80端口):

    FROM crazymax/matomo:latest
    EXPOSE 80
    
  2. 推送代码到Dokku后,配置域名
    登录你的Dokku服务器,执行:

    dokku domains:set matomo your-matomo-hostname.com
    
  3. 检查并设置端口映射
    Dokku需要知道容器的端口和外部端口的映射关系,执行:

    # 查看当前端口映射
    dokku proxy:ports matomo
    # 如果不是 http:80->80,手动设置
    dokku proxy:ports-set matomo http:80:80
    
  4. 配置必要的环境变量
    新版Matomo需要数据库等环境变量,比如你用Dokku的Postgres插件的话,执行:

    dokku config:set matomo MATOMO_DATABASE_HOST=dokku-postgres-matomo
    dokku config:set matomo MATOMO_DATABASE_USER=matomo
    dokku config:set matomo MATOMO_DATABASE_PASSWORD=your-db-password
    dokku config:set matomo MATOMO_DATABASE_NAME=matomo
    
  5. 排查404错误
    如果还是404,先看容器日志确认Matomo服务是否正常启动:

    dokku logs matomo -t
    

    也可以进入容器内部,测试web服务是否正常:

    dokku enter matomo
    # 容器内执行 curl localhost,看是否返回Matomo的页面
    

方案2:用Dokku的compose插件(适合多服务场景)

如果你确实需要用docker-compose(比如要同时部署Matomo和数据库),可以用Dokku官方的dokku-compose插件:

  1. 安装插件

    sudo dokku plugin:install https://github.com/dokku/dokku-compose.git compose
    
  2. 修改docker-compose.yml,添加Dokku识别标签
    给你的Matomo服务加上Dokku专属的标签,让插件能正确识别:

    services:
      matomo:
        image: crazymax/matomo:latest
        ports:
          - "80:80"
        environment:
          MATOMO_DATABASE_HOST: db
          # 其他必要的环境变量...
        labels:
          - "dokku.app.name=matomo"
          - "dokku.http.port=80"
      db:
        image: mariadb:latest
        environment:
          MYSQL_ROOT_PASSWORD: your-root-pass
          MYSQL_DATABASE: matomo
          MYSQL_USER: matomo
          MYSQL_PASSWORD: your-db-pass
        volumes:
          - db-data:/var/lib/mysql
    volumes:
      db-data:
    
  3. 用compose插件部署
    把修改后的docker-compose.yml推送到Dokku仓库后,执行:

    dokku compose:up -d
    

这样就能让Dokku正确识别并部署你的docker-compose配置了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:07:49