PM2:Example
Node.js 서비스를 Docker로 시작하며, Hooka를 사용하여, webhook을 적용하고, 모든 프로젝트는 PM2로 관리한다.
process.json
{
"apps" : [{
"name" : "admin",
"cwd" : "/cycloud-admin",
"script" : "app.js",
"watch" : true,
"env" : {
"NODE_ENV" : "development"
},
"env_production" : {
"NODE_ENV" : "production"
}
}, {
"name" : "hooka",
"cwd" : "/cycloud-admin",
"script" : "hooka --port 3001"
}]
}
webhook.json
Docker startup script
#!/usr/bin/env bash
if [[ -z $(which git) ]]; then
echo "Not found git."
exit 1
fi
if [[ -z $(which yarn) ]]; then
echo "Not found yarn."
exit 1
fi
REPOSITORY=$GIT_URI
if [[ ! -z $GIT_URI ]]; then
REPOSITORY=$GIT_URI
elif [[ -f $GIT_URI_FILE ]]; then
REPOSITORY=`cat $GIT_URI_FILE`
else
echo "Define GIT_URI or GIT_URI_FILE"
exit 1
fi
WORKING_DIR=/cycloud-admin
git config --global credential.helper cache
git clone -b master $REPOSITORY $WORKING_DIR
cd $WORKING_DIR
yarn global add pm2 hooka
yarn
echo "Start PM2"
pm2-runtime process.json
Dockerfile
FROM node:8.11
MAINTAINER yourname <yourid@gmail.com>
COPY docker-script.sh /docker-script.sh
CMD ["/bin/bash", "/docker-script.sh"]