dockerizing

This commit is contained in:
2024-03-10 14:16:31 -05:00
parent a9fa89107e
commit c8d0221247
6 changed files with 59 additions and 12 deletions

4
.dockerignore Normal file
View File

@@ -0,0 +1,4 @@
node_modules
npm-debug.log
Dockerfile
.dockerignore

14
Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
FROM node:21
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
RUN mkdir -p /home/node/app/var/db && chown -R node:node /home/node/app
WORKDIR /home/node/app
USER node
COPY --chown=node:node package*.json ./
RUN npm install
COPY --chown=node:node src src
COPY --chown=node:node bin bin
EXPOSE 3000
CMD [ "npm", "start" ]

24
bin/www
View File

@@ -20,20 +20,18 @@ const path = require("path");
var port = normalizePort(process.env.PORT || "3000"); var port = normalizePort(process.env.PORT || "3000");
app.set("port", port); app.set("port", port);
/**
* Create HTTPS server.
*/
const https_options = {
key: fs.readFileSync("certs/key.pem"),
cert: fs.readFileSync("certs/cert.pem"),
};
if (process.env.NODE_ENV === "development") { if (process.env.NODE_ENV === "development") {
// console.log(`starting livereload, watching ${path.join(__dirname, "../src/views")}`) /**
* Create HTTPS server.
*/
const https_options = {
key: fs.readFileSync("certs/key.pem"),
cert: fs.readFileSync("certs/cert.pem"),
};
var livereload = require("livereload"); var livereload = require("livereload");
var connectLiveReload = require("connect-livereload");
const liveReloadServer = livereload.createServer({https: https_options, extraExts: ['pug']}); const liveReloadServer = livereload.createServer({https: https_options});
liveReloadServer.watch(path.join(__dirname, "../src/views")); liveReloadServer.watch(path.join(__dirname, "../src/views"));
liveReloadServer.server.once("connection", () => { liveReloadServer.server.once("connection", () => {
setTimeout(() => { setTimeout(() => {
@@ -41,9 +39,11 @@ if (process.env.NODE_ENV === "development") {
}, 100); }, 100);
}); });
var server = https.createServer(https_options, app);
}
else {
var server = http.createServer(app);
} }
var server = https.createServer(https_options, app);
/** /**
* Listen on provided port, on all network interfaces. * Listen on provided port, on all network interfaces.

3
caddy/Caddyfile Normal file
View File

@@ -0,0 +1,3 @@
localhost {
reverse_proxy app:3000
}

24
docker-compose.yml Normal file
View File

@@ -0,0 +1,24 @@
version: "3.3"
services:
app:
env_file:
- .env
build: .
networks:
- web
expose:
- 3000
caddy:
image: caddy
ports:
- 80:80
- 443:443
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
networks:
- web
networks:
web:

View File

@@ -163,4 +163,6 @@ app.use(function (err, req, res, next) {
// next(createError(404)); // next(createError(404));
// }); // });
app.set('trust proxy')
module.exports = {app}; module.exports = {app};