Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# ============ Stage 1: Build with Node ============
FROM node:22 AS builder

# Set the working directory
WORKDIR /app

# Copy package.json and package-lock.json (for caching)
COPY package*.json ./

# Install dependencies
RUN npm install --frozen-lockfile

# Copy the rest of your source code
COPY . .

# Build the static production files to /app/dist
RUN npm run build


# ============ Stage 2: Use nginxinc/nginx-unprivileged ============
FROM nginxinc/nginx-unprivileged:latest

# Clean up default content (optional)
USER root
RUN rm -rf /usr/share/nginx/html/*
USER 101

# Copy the build artifacts from the builder stage
COPY --from=builder /app/dist /usr/share/nginx/html

# This image listens on port 8080 by default (unprivileged port).
EXPOSE 8080

# Run NGINX in the foreground
CMD ["nginx", "-g", "daemon off;"]
2 changes: 1 addition & 1 deletion src/pages/VideoWall/VideoWall.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import ReactGridLayout, {Responsive, WidthProvider, Layout} from "react-grid-lay
import styled from "styled-components";
import {AspectRatio, Button, ComboboxItem, Modal, Select} from "@mantine/core";
import classes from './video_wall.module.css'
import React, {MouseEvent, useCallback, useEffect, useState} from "react";
import React, {useCallback, useEffect, useState} from "react";
import axios from "@/axios_config.tsx";
import {apiRoutes} from "@/apiRoutes.tsx";
import { ResizableBox } from 'react-resizable';
Expand Down