diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d31e1cc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +node_modules +build +.idea diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..352e816 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +BLOCK_IO_API_KEY=XXXXXXXXXXXXX +BLOCK_IO_SECRET_PIN=XXXXXXXXXXXXX +SLACK_TOKEN=XXXXXXXXXXXXX +BOT_USER_ID=XXXXXXXXXXXXX +BOT_CHANNEL_MEMBER_ID=XXXXXXXXXXXXX +GENERAL_CHANNEL_ID=XXXXXXXXXXXXX diff --git a/.gitignore b/.gitignore index a5c7372..98133a3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules .env .idea/ yarn-error.log +*.env build/ diff --git a/Dockerfile b/Dockerfile index d3a2f46..7c900c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,10 @@ -FROM node:8-alpine - +FROM node:12-alpine WORKDIR /opt/app -COPY . /opt/app - -RUN npm i -RUN npm i -g forever +COPY ./ /opt/app/ +RUN yarn && yarn build -ENTRYPOINT sh /opt/app/app.sh +FROM node:12-alpine +WORKDIR /opt/app +COPY --from=0 /opt/app/build /opt/app/ +RUN yarn --production && yarn cache clean +CMD ["node", "index.js"] diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..8751b92 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,5 @@ +FROM node:12-alpine +WORKDIR /opt/app +RUN yarn + +CMD ["yarn", "dev"] diff --git a/README.md b/README.md index 846e28e..3be6244 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ `.env` file should look like: -``` +```shell BLOCK_IO_API_KEY=XXXXXXXXX BLOCK_IO_SECRET_PIN=XXXXXXX SLACK_TOKEN=xoxb-..... @@ -12,6 +12,14 @@ BOT_USER_ID=----- GENERAL_CHANNEL_ID=YOUR_GENERAL_CHANNEL ``` +`dev.env` should look like this: + +```shell +NGROK_ACCOUNT=YOUR_NGROK_ACCOUNT +HOST=doge-cool +PORT=3000 +``` + ### In public / private channels - `tip ` - gives amount to specified user @@ -23,3 +31,12 @@ GENERAL_CHANNEL_ID=YOUR_GENERAL_CHANNEL - `deposit` - return address - `balance` - shows balance - `withdraw ` - withdraws to address + +## Docker + +- develop app in container: + `yarn dev:docker` +- build image: + `yarn build:docker` +- run app in container: + `yarn start:docker` diff --git a/app.sh b/app.sh deleted file mode 100755 index d382a62..0000000 --- a/app.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -ex - -forever src/index.js - diff --git a/dev.env.example b/dev.env.example new file mode 100644 index 0000000..3b3deb3 --- /dev/null +++ b/dev.env.example @@ -0,0 +1,3 @@ +NGROK_ACCOUNT=XXXXXXXXXXXXX +HOST=XXXXXXXXXXXXX +PORT=3000 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..db7346d --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,19 @@ +version: "3" +services: + doge-cool: + build: + context: ./ + dockerfile: Dockerfile.dev + volumes: + - ./:/opt/app + ngrok: + image: wernight/ngrok + command: ./start-ngrok.sh + env_file: + - ./.env + - ./dev.env + volumes: + - $HOME/.ngrok2/:/home/ngrok/.ngrok2/ + - ./start-ngrok.sh:/start-ngrok.sh + depends_on: + - doge-cool diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6088a1e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3" +services: + doge-cool: + image: doge-cool:latest + ports: + - 3000:3000 + restart: unless-stopped + logging: + driver: "json-file" + options: + max-file: "10" + max-size: "100m" diff --git a/package.json b/package.json index f38813a..c3032cd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,11 @@ "dev": "nodemon --watch src --ext ts,js --exec 'ts-node' src/index.ts", "prettier": "prettier --write '**/*.{js,ts,tsx,json,md}'", "precommit": "pretty-quick --staged", - "start": "sh app.sh" + "build": "yarn tsc && cp src/lib/*.json build/lib/ && cp package.json build/package.json", + "start": "node build/index.js", + "dev:docker": "docker-compose -f docker-compose.dev.yml up", + "build:docker": "docker build -t doge-cool -f Dockerfile .", + "start:docker": "yarn build:docker && docker-compose up" }, "prettier": { "singleQuote": true, diff --git a/start-ngrok.sh b/start-ngrok.sh new file mode 100755 index 0000000..a8ba552 --- /dev/null +++ b/start-ngrok.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +ngrok http -subdomain="${NGROK_ACCOUNT}" "${HOST}:${PORT}"