diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..686cfdab --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM node:12.20.0-alpine3.12 + +# Expose the port +EXPOSE 8008 + +# Install git +RUN apk add git + +# Install pm2 +RUN npm install pm2 -g + +# Installing log rotation +RUN pm2 install pm2-logrotate + +# Set working directory to /usr/server + +# Set directory +VOLUME [ "./logs" ] + +# Copy dependency files +COPY package.json . +COPY yarn.lock . + +# Install and build +RUN yarn install --ignore-scripts + +# Project files +COPY src src/ +COPY config.json . +COPY pm2.json . + +# Build project files copied +RUN yarn build.lib + +CMD [ "pm2-runtime", "pm2.json" ] \ No newline at end of file diff --git a/README.md b/README.md index 4fc21e23..352c2238 100644 --- a/README.md +++ b/README.md @@ -38,32 +38,27 @@ To launch the reports server, just type `yarn start`. -You can also build the server code by running `yarn build`, which puts its output in the `lib` folder. You can then use `forever-service` or similar tools to install the software on your server machine. +You can also build the server code by running `yarn build`, which puts its output in the `lib` folder. You can then use `PM2` or similar tools to install the software on your server machine. ```sh -# install forever-service: -sudo npm i -global forever -sudo npm i -global forever-service - -# install: -cd edge-reports-server -sudo forever-service install reportsQuery --script lib/indexEngine.js --start -sudo forever-service install reportsRates --script lib/indexRatesEngine.js --start -sudo forever-service install reportsApi --script lib/indexApi.js --start - -# manage: -sudo service reportsQuery restart -sudo service reportsQuery stop -sudo service reportsRates restart -sudo service reportsRates stop -sudo service reportsApi restart -sudo service reportsApi stop - -# uninstall: -sudo forever-service delete reportsQuery -sudo forever-service delete reportsRates -sudo forever-service delete reportsApi +#### Launch server using `PM2` + + pm2 start pm2.json + +#### `PM2` Dashboard + + pm2 monit + +#### Restart, stop, delete service + + Or run tasks manually, + + pm2 stop pm2.json + + pm2 restart pm2.json + + pm2 delete pm2.json ``` ## Demo app diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..e2c053ef --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + infoserver: + image: edge-reports-server:latest + network_mode: host + volumes: + - ./logs:/usr/server/logs + container_name: edge-reports-server \ No newline at end of file diff --git a/pm2.json b/pm2.json new file mode 100644 index 00000000..ba648f4c --- /dev/null +++ b/pm2.json @@ -0,0 +1,9 @@ +{ + "apps": [{ + "name": "edge-reports-server", + "script": "lib/indexApi.js", + "instances": "1", + "error_file": "logs/server/error.log", + "out_file": "logs/server/log.log" + }] +} \ No newline at end of file