pm2를 사용하여 앱에 인수를 전달하는 방법은 무엇입니까?
pm2를 사용하여 내 앱을 시작하고 있지만 인수를 전달할 수 없습니다. 내가 사용하는 명령은 pm2 start app.js-dev입니다. 이것은 영원히 작동하지만.
이 티켓에 명시된대로 할 수 있습니다 : https://github.com/Unitech/pm2/issues/13
환경을 전달하는 경우 환경 변수 활용을 고려할 수 있습니다. 이를 통해 해당 환경의 모든 프로세스에서 액세스 할 수있는 변수를 만듭니다 process.env.*
.
따라서 구성 파일이 있습니다 config.json
.
{
"dev": {
"db": {
"hosts":["localhost"],
"database": "api"
},
"redis": {
"hosts": ["localhost"]
}
},
"staging": {
"db": {
"hosts":["1.1.1.1"],
"database": "api"
},
"redis": {
"hosts": ["2.2.2.2"]
}
},
"production": {
"db": {
"hosts":["1.1.1.1", "1.1.1.2", "1.1.1.3"],
"database": "api"
},
"redis": {
"hosts": ["2.2.2.2", "2.2.2.3"]
}
}
}
그런 다음 구성을 가져옵니다.
var config=require('./config.json')[process.env.NODE_ENV || 'dev'];
db.connect(config.db.hosts, config.db.database);
그런 다음 셸을 통해 환경에서 변수를 설정합니다.
export NODE_ENV=staging
pm2 start app.js
환경 변수는 세션 동안 지속됩니다. 따라서 ~/.bashrc
변수가 지속되도록 해당 사용자에 대해 파일 에서 설정해야합니다 . 이것은 매 세션마다 변수를 설정합니다.
PM2에는 앱이 데몬 화되기 전에 매번 환경 변수를 설정할 수 있는 배포 시스템 이 있습니다. 이것은 POSIX 시스템의 데몬이 일반적으로 매개 변수를 취하는 방법입니다. 이러한 매개 변수는 프로세스에서 손실되지 않기 때문입니다. 당신의 상황을 감안할 때 그다지 중요하지 않을 수도 있지만 좋은 습관입니다.
또한 프로덕션에서 다운 타임을 방지하기 위해 가능하면 로컬에서 중지 / 시작하고 다시 시작 (클러스터 모드 인 경우)하는 것을 고려해야합니다.
CLI에서 노드 인수를 전달하려면
pm2 start myServer.js --node-args="--production --port=1337"
.
수정 됨
다음에 인수를 추가 할 수 있습니다. --
pm2 start app.js -- --prod
deploymemt에 대한 Sails 문서 .
It is possible to define arguments with the process.
You can define a new process in ecosystem.config.js
with an args
key, like so:
{
name : 'my-service',
script : './src/service.js',
args : 'firstArg secondArg',
},
{
name : 'my-service-alternate',
script : './src/service.js',
args : 'altFirstArg altSecondArg',
}
Here, the two processes use the same file (service.js
), but pass different arguments to it.
Note that these arguments are handled within service.js
. In my case I just used process.argv[2]
to get the first argument, and so on.
You can send arguments to your script by passing them after --
. For example: pm2 start app.js -i max -- -a 23 // Pass arguments after -- to app.js
Well there are 2 ways you can do to pass the parameters from pm2 to nodejs in CLI:
- pm2 start app.js -- dev --port=1234 (note there is an extra space between -- and dev)
- pm2 start app.js --node-args="dev --port=1234"
Both ways, you will find these values exist in process.argv
(['dev','--port=1234'])
From the pm2 docs
//Inject what is declared in env_production
$ pm2 start app.js --env production
//Inject what is declared in env_staging
$ pm2 restart app.js --env staging
참고URL : https://stackoverflow.com/questions/28980307/how-to-pass-arguments-to-app-using-pm2
'IT박스' 카테고리의 다른 글
오래된 데이터에 대한 UICollectionView 어설 션 오류 (0) | 2020.12.03 |
---|---|
Postman Jetpack에서 테스트 컬렉션 내보내기 (0) | 2020.12.03 |
vs 코드는 '@ angular / core'모듈 또는 다른 모듈을 찾을 수 없습니다. (0) | 2020.12.03 |
콜론 구분 기호가있는 시간대에 대한 Java SimpleDateFormat? (0) | 2020.12.03 |
Java에서 날짜 객체에 시간을 설정하는 방법 (0) | 2020.12.03 |