diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e158f1c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3' +services: + frontend: + image: comp2707-frontend + build: frontend/ + container_name: comp2707-frontend + ports: + - 8080:8080 + backend: + image: comp2707-backend + build: backend/ + container_name: comp2707-backend + ports: + - 5000:5000 diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..8b97a70 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,15 @@ +FROM node:18.3.0-alpine AS builder + +# Install all node dependencies separately so it's cached in docker build +COPY ./package.json /tmp/package.json +RUN cd /tmp && npm install +RUN mkdir /code && cp -a /tmp/node_modules /code/ + +# Copy all the source code +WORKDIR /code +COPY ./ /code + +# Build the project +RUN ["npm", "run", "build"] +CMD ["node", "serve.js"] + diff --git a/frontend/serve.js b/frontend/serve.js new file mode 100644 index 0000000..e0feec6 --- /dev/null +++ b/frontend/serve.js @@ -0,0 +1,33 @@ +const express = require("express"); +const path = require("path"); +const app = express(); + +app.use("/*", (req, res, next) => { + now = new Date(); + var datetime = + now.getFullYear() + + "/" + + (now.getMonth() + 1) + + "/" + + now.getDate() + + " " + + now.getHours() + + ":" + + now.getMinutes() + + ":" + + now.getSeconds(); + + console.log(datetime, req.method, req.baseUrl); + res.setHeader("X-Powered-By", "Ligma"); // Hide server to the client + next(); +}); + +app.use(express.static(path.join(__dirname, "build"))); + +app.get("/*", function (_, res) { + res.sendFile(path.join(__dirname, "build", "index.html")); +}); + +app.listen(8080, () => { + console.log("Server started on port 8080"); +});