Я развернул петлевое приложение с помощью пользовательского сценария init.d/app.conf, используя slc run --detach --cluster "cpu"
, но хочу перейти на использование strong-pm, как это рекомендуется.
Но я столкнулся с некоторыми ограничениями и ищу какие-либо рекомендации о том, как воспроизвести настройку, с которой я в настоящее время знаком.
В настоящее время я устанавливаю конфигурацию для конкретного приложения внутри server/config.local.js
и server/datasources.local.js
, что наиболее важно ПОРТ, на котором приложение должно прослушивать подключения. Это отлично работает с использованием slc run
для локальной разработки и удаленного развертывания для подготовки, все, что я делаю, это устанавливаю разные переменные env для каждого отдельного приложения:
источники данных.local.js:
module.exports = {
"mysqlDS": {
name: "mysqlDS",
connector: "mysql",
host: process.env.PROTEUS_MYSQL_HOST,
port: process.env.PROTEUS_MYSQL_PORT,
database: process.env.PROTEUS_MYSQL_DB,
username: process.env.PROTEUS_MYSQL_USER,
password: process.env.PROTEUS_MYSQL_PW
}
}
config.local.js:
module.exports = {
port: process.env.PROTEUS_API_PORT
}
Когда я развертываю с помощью strong-pm, я не могу контролировать этот порт, и для него всегда устанавливается значение 3000+N, где N просто увеличивается на основе идентификатора службы, назначенного приложению при его развертывании.
Поэтому даже когда я развертываю, а затем устанавливаю env, используя
slc ctl -C http://localhost:8701 env-set proteus-demo PROTEUS_API_PORT=3033 PROTEUS_DB=demo APP_DOMAIN=demo.domain.com
Я вижу, что strong-pm полностью игнорирует PROTEUS_API_PORT при повторном развертывании с новыми переменными env:
ENV has changed, restarting
Service "1" listening on 0.0.0.0:3001
Restarting next commit Runner: commit 1/deploy/default/demo-deploy
Start Runner: commit 1/deploy/default/demo-deploy
Request (status) of current Runner: child 20066 commit 1/deploy/default/demo-deploy
Request {"cmd":"status"} of Runner: child 20066 commit 1/deploy/default/demo-deploy
3001! Не 3033, как я хочу, а указано в config.local.js. Есть ли способ контролировать это явно? Я не хочу запускать команду проверки slc для определения порта для моего восходящего блока nginx каждый раз, когда я развертываю приложение. Было бы здорово иметь возможность указать ПОРТ прослушивания по имени службы.
FWIW, это на экземпляре aws, в котором будут размещаться демонстрационные и промежуточные приложения, указывающие на отдельные БД и на разные ПОРТЫ.