티스토리 뷰
express앱을 배포 할 때 아래 명령어를 써서 배포를 하곤 합니다.
node app.js &
그런데 ci/cd를 구축 하려고 하면 kill -9 <process_id>로 내렸다가 올려야 합니다. 그런메 process_id를 따로 관리 해주기가 불편해서 안쓰고 있었는데 pm2라는 것을 알게 되었습니다.
pm2 설치
sudo npm install pm2 -g
설치는 위 명령어로 해주면 됩니다.
pm2 명령어
그리고 node app.js 대신 pm2 start app.js 를 써주시면 됩니다.
그러면 이렇게 name이 app이라고 뜹니다.
pm2 stop app
여기에서 위 명령어를 쓰면 프로세스를 프로세스 id를 몰라도 종료 할 수 있습니다.
그리고 다시 git pull을 받고 pm2 start app.js 해주면 됩니다.
stop and start가 귀찮다면 pm2 restart app 을 씁니다.
아래 스크립트는 캐싱 기능이 포함되어 있어서 npm install을 빠르게 해주는 기능이 포함된 제가 사용하는 깃랩 cicd코드 입니다. start를 해주시고 뒤에 start를 restart로 바꿔서 사용중입니다.
.gitlab.ci.yml
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .next/
stages: # List of stages for jobs, and their order of execution
- install
- build
- deploy
install_dependencies:
stage: install
tags:
- $TAG
script:
- echo "$TAG"
- npm install
deploy-job: # This job runs in the deploy stage.
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
tags:
- $TAG
script:
- echo "Deploying application..."
- pm2 start app.js
결과
pm2 restart app은 app이 실행중이 아니면 작동을 하지 않기 때문에 start로 먼저 실행하고 pm2 restart app으로 바꿉니다.
인스턴스 상태 보기
pm2 show app
현재 실행중인 앱 이름이 app이기 때문에 app으로 했습니다.
end.
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker container tissue
- 도커티슈케이스
- vim
- docker container
- docker container tissue box
- docker container whale
- 개발자
- 도커각티슈케이스
- 도커티슈박스
- shellscript
- 도커컨테이너
- 싱가폴
- 2017 티스토리 결산
- Linux
- docker container case
- 도커각티슈박스
- Sh
- 이직
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함