From 7e088576965964656ef4adfa5be6e45563091727 Mon Sep 17 00:00:00 2001 From: slynn1324 Date: Sat, 23 Jan 2021 14:05:02 -0600 Subject: [PATCH] added docker support --- .dockerignore | 6 ++++++ Dockerfile | 11 +++++++++++ docker-build.sh | 2 ++ docker-run.sh | 4 ++++ server.js | 25 +++++++++++++++++++------ 5 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100755 docker-build.sh create mode 100755 docker-run.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d7b3ecd --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +*.db +*.psd +*.crx +*.pem +.gitignore +.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3a380a2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:alpine3.12 + +COPY . /tinypin + +WORKDIR /tinypin + +RUN apk add build-base python3 && npm install --verbose && apk del build-base python3 + +RUN npm install + +ENTRYPOINT ["sh", "-c" , "node server.js -i /data/images -d /data/tinypin.db"] diff --git a/docker-build.sh b/docker-build.sh new file mode 100755 index 0000000..b9bd6e4 --- /dev/null +++ b/docker-build.sh @@ -0,0 +1,2 @@ +#!/bin/sh +docker build -t tinypin . diff --git a/docker-run.sh b/docker-run.sh new file mode 100755 index 0000000..d376382 --- /dev/null +++ b/docker-run.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +#-e TINYPIN_SLOW=2000 +docker run --name tinypin -p 3001:3000 -v "$(pwd)/data:/data" tinypin diff --git a/server.js b/server.js index 3b2d7b6..81cccb6 100644 --- a/server.js +++ b/server.js @@ -10,6 +10,17 @@ const fs = require('fs').promises; const path = require('path'); const fetch = require('node-fetch'); +process.on('SIGINT', () => { + console.info('ctrl+c detected, exiting tinypin'); + console.info('goodbye.'); + process.exit(0); +}); + +process.on('SIGTERM', () => { + console.info('sigterm detected, exiting tinypin'); + console.info('goodbye.'); + process.exit(0); +}); const argv = yargs .option('slow', { @@ -49,8 +60,10 @@ console.log('configuration:'); console.log(` port: ${PORT}`); console.log(` database path: ${DB_PATH}`); console.log(` image path: ${IMAGE_PATH}`) -if ( argv.slow ){ - console.log(` slow mode delay: ${argv.slow}`); + +const SLOW = argv.slow || parseInt(process.env.TINYPIN_SLOW); +if ( SLOW ){ + console.log(` slow mode delay: ${SLOW}`); } console.log(''); @@ -59,18 +72,18 @@ const db = betterSqlite3(DB_PATH); // express config const app = express(); app.use(express.static('static')); -app.use(express.static('images')); +app.use(express.static(IMAGE_PATH)); app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()); app.set('json spaces', 2); //emulate slow down -if ( argv.slow ){ +if ( SLOW ){ app.use( (req,res,next) => { console.log("slow..."); setTimeout(() => { next(); - }, 2000); + }, SLOW); }); } @@ -413,4 +426,4 @@ function getThumbnailImagePath(pinId){ let dir = `${IMAGE_PATH}/thumbnails/${paddedId[11]}/${paddedId[10]}/${paddedId[9]}/${paddedId[8]}`; let file = `${dir}/${paddedId}.jpg`; return {dir: dir, file: file}; -} \ No newline at end of file +}