From 50201f0a991cb3fc9db42fbecf929091150b0874 Mon Sep 17 00:00:00 2001 From: zstadler Date: Mon, 7 Nov 2022 04:30:55 +0200 Subject: [PATCH] Add Docker Healthcheck (#636) * Add Docker Healthcheck Fixes #635 * Update Dockerfile_light * Update healthcheck.js fix healthcheck output error: "file:///usr/src/app/src/healthcheck.js:1\nvar http = require(\"http\");\n ^\n\nReferenceError: require is not defined in ES module scope, you can use import instead\nThis file is being treated as an ES module because it has a '.js' file extension and '/usr/src/app/package.json' contains \"type\": \"module\". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.\n at file:///usr/src/app/src/healthcheck.js:1:12\n at ModuleJob.run (node:internal/modules/esm/module_job:193:25)\n at async Promise.all (index 0)\n at async ESMLoader.import (node:internal/modules/esm/loader:526:24)\n at async loadESM (node:internal/process/esm_loader:91:5)\n at async handleMainPromise (node:internal/modules/run_main:65:12)\n" * update version Co-authored-by: acalcutt --- Dockerfile | 2 ++ Dockerfile_light | 1 + package-lock.json | 4 ++-- package.json | 2 +- src/healthcheck.js | 18 ++++++++++++++++++ 5 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 src/healthcheck.js diff --git a/Dockerfile b/Dockerfile index 7f50b00..8460f46 100644 --- a/Dockerfile +++ b/Dockerfile @@ -81,3 +81,5 @@ EXPOSE 80 USER node:node ENTRYPOINT ["/usr/src/app/docker-entrypoint.sh"] + +HEALTHCHECK CMD node /usr/src/app/src/healthcheck.js diff --git a/Dockerfile_light b/Dockerfile_light index a452e53..ed488ef 100644 --- a/Dockerfile_light +++ b/Dockerfile_light @@ -32,3 +32,4 @@ COPY / /usr/src/app RUN cd /usr/src/app && npm install --omit=dev RUN ["chmod", "+x", "/usr/src/app/docker-entrypoint.sh"] USER node:node +HEALTHCHECK CMD node /usr/src/app/src/healthcheck.js diff --git a/package-lock.json b/package-lock.json index 29234c5..d2416b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "tileserver-gl", - "version": "4.1.2", + "version": "4.1.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "tileserver-gl", - "version": "4.1.2", + "version": "4.1.3", "license": "BSD-2-Clause", "dependencies": { "@mapbox/glyph-pbf-composite": "0.0.3", diff --git a/package.json b/package.json index a037263..ff4beae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tileserver-gl", - "version": "4.1.2", + "version": "4.1.3", "description": "Map tile server for JSON GL styles - vector and server side generated raster tiles", "main": "src/main.js", "bin": "src/main.js", diff --git a/src/healthcheck.js b/src/healthcheck.js new file mode 100644 index 0000000..11d11f9 --- /dev/null +++ b/src/healthcheck.js @@ -0,0 +1,18 @@ +import * as http from 'http'; +var options = { + timeout: 2000, +}; +var url = "http://localhost:80/health"; +var request = http.request(url, options, (res) => { + console.log(`STATUS: ${res.statusCode}`); + if (res.statusCode == 200) { + process.exit(0); + } else { + process.exit(1); + } +}); +request.on("error", function (err) { + console.log("ERROR"); + process.exit(1); +}); +request.end();