diff --git a/web/docs/.dockerignore b/web/docs/.dockerignore new file mode 100644 index 000000000..40b878db5 --- /dev/null +++ b/web/docs/.dockerignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/web/docs/Dockerfile b/web/docs/Dockerfile new file mode 100644 index 000000000..895e317eb --- /dev/null +++ b/web/docs/Dockerfile @@ -0,0 +1,34 @@ +# Multi-stage +# 1) Node image for building frontend assets +# 2) nginx stage to serve frontend assets + +# Stage 1 +FROM node:15-buster-slim AS builder + +# Install some dependencies before building +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y git && \ + apt-get install -y python + +WORKDIR /app + +# Copy only the package files and install necessary dependencies. +# This reduces cache busting when source files are changed. +COPY package.json . +COPY package-lock.json . +RUN npm ci + +# Copy the rest of the project files and build +COPY . . +RUN npm run build + +# Stage 2 +FROM nginx +COPY nginx.conf /etc/nginx/conf.d/default.conf +# Set working directory to nginx asset directory +# Copy static assets from builder stage +COPY --from=builder /app/build /usr/share/nginx/html/ +EXPOSE 80 +# Containers run nginx with global directives and daemon off +ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/web/docs/docker-compose.yml b/web/docs/docker-compose.yml new file mode 100644 index 000000000..3c8d2f46f --- /dev/null +++ b/web/docs/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + webserver: + container_name: docswebserver + build: + context: . + dockerfile: Dockerfile + ports: + - 8080:80 + environment: + - NODE_ENV=production diff --git a/web/docs/nginx.conf b/web/docs/nginx.conf new file mode 100644 index 000000000..378a94bf1 --- /dev/null +++ b/web/docs/nginx.conf @@ -0,0 +1,12 @@ +server { + listen 80; + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file