我正在尝试将Strapi部署在Digital Ocean Droplet的Dokku实例上。我最初遇到了一些与mongo数据库连接的问题,但是经过一番尝试和错误以及对these docs和this issue的大量评论,我才能够停止抱怨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吗?然后将一个letencrypt证书添加到我的域?我使用了错误的端口吗?在server.json
中设置代理?
PS。我正在使用Dokku Mongo。考虑到测功机不会像在heroku上那样睡觉,这不是一个问题。那是不正确的假设吗?
此外,Droplet上还运行着其他应用程序。也许是代理问题?