首页 > 解决方案 > 在 Dokku 上部署时出现 Strapi EADDRNOTAVAIL 错误

问题描述

我正在尝试在 Digital Ocean 液滴上的 Dokku 实例上部署 Strapi。我最初在连接到 mongo 数据库时遇到了一些问题,但是经过一些试验和错误以及对这些文档这个问题的大量审查后,我能够让它停止抱怨 mongo 连接。这是我的决赛config/environments/production/database.json

{
  "defaultConnection": "default",
  "connections": {
    "default": {
      "connector": "mongoose",
      "settings": {
        "client": "mongo",
        "uri": "${process.env.MONGO_URL}",
        "database": "${process.env.DATABASE_NAME}",
        "username": "${process.env.DATABASE_USERNAME}",
        "password": "${process.env.DATABASE_PASSWORD}",
        "port": "${process.env.DATABASE_PORT || 27017}"
      },
      "options": {
        "authenticationDatabase": "${process.env.DATABASE_AUTHENTICATION_DATABASE || ''}",
        "useUnifiedTopology": "${process.env.USE_UNIFIED_TOPOLOGY || false}",
        "ssl": "${process.env.DATABASE_SSL || false}"
      }
    }
  }
}

这是我的config/environments/production/server.json

{
  "host": "${process.env.HOST || '0.0.0.0'}",
  "port": "${process.env.PORT || 1337}",
  "production": true,
  "proxy": {
    "enabled": false
  },
  "cron": {
    "enabled": false
  },
  "admin": {
    "autoOpen": false
  }
}

我相信最初的问题是我不小心将PORT变量用于数据库而不是DATABASE_PORT变量。

但是,现在我已经解决了这个错误:

error Error: listen EADDRNOTAVAIL: address not available <my-host-ip>:5000

我想也许某处缓存了一些错误的端口,但无论我做什么,我似乎都无法让它工作。我需要启用 ssl 吗?然后将letsencrypt证书添加到我的域?我使用了错误的端口吗?在 ? 中设置代理server.json

PS。我正在使用 Dokku Mongo。考虑到测功机不会像在 Heroku 上那样入睡,我认为这不是一个问题。这是一个不正确的假设吗?

此外,Droplet 上还有其他应用程序正在运行。也许是代理问题?

标签: mongodbmongoosestrapidokku

解决方案


推荐阅读