From 972512d3c25107cbe9c93b41f6433e8ba22bf2d0 Mon Sep 17 00:00:00 2001 From: Thomas Ghysels Date: Fri, 14 Jul 2023 12:33:51 +0200 Subject: [PATCH] Add Dockerfile --- .dockerignore | 4 ++++ Dockerfile | 12 ++++++++++++ package.json | 3 +++ srv/index.ts | 4 ++++ 4 files changed, 23 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..47485f3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +# Run `npm run build` before `npm run docker` +/* +!/dist +!/package*.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fb1df08 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:18-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install --production + +COPY dist . + +ENTRYPOINT ["node"] +CMD ["srv/index.js"] diff --git a/package.json b/package.json index 82cb845..1a308fd 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "watch": "tsc -p ./ -w", "start": "npm run watch & nodemon dist/srv/index.js", "fix": "prettier --write .", + "docker": "docker build -t thgh/tunnelmole .", + "docker:push": "docker push thgh/tunnelmole", + "docker:run": "docker run -it -e PORT=80 -e TUNNELMOLE_API_KEYS=example-only-delete-in-production -p 80:80 tunnelmole", "start-prod": "node dist/srv/index.js" }, "author": "", diff --git a/srv/index.ts b/srv/index.ts index 749455f..2b13225 100644 --- a/srv/index.ts +++ b/srv/index.ts @@ -103,3 +103,7 @@ const interval = setInterval(function ping() { wss.on("close", function close() { clearInterval(interval); }); + +// Listen for termination signals allows Ctrl+C in docker run +process.on("SIGINT", () => process.exit(0)); +process.on("SIGTERM", () => process.exit(0));