Skip to content

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

[
    {
        "method": ["POST"],
        "path": "/pull",
        "command": "git pull"
    }
]

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"]

See also