From 8fe330857dee93cde3164827426ee6cf6048fd7f Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Wed, 12 Nov 2025 12:26:05 -0600 Subject: [PATCH] web: Update Dockerfile, Makefile --- web/backend/Dockerfile | 8 ++++++-- web/backend/Makefile | 12 +++++++++++- web/backend/docker/startup.jl | 4 +++- web/backend/src/server.jl | 2 +- web/frontend/Dockerfile | 18 ++++++++++-------- web/frontend/Makefile | 13 +++++++++++-- 6 files changed, 42 insertions(+), 15 deletions(-) diff --git a/web/backend/Dockerfile b/web/backend/Dockerfile index f3660a6..8b65870 100644 --- a/web/backend/Dockerfile +++ b/web/backend/Dockerfile @@ -5,12 +5,16 @@ WORKDIR /app # Install project & dependencies COPY Project.toml /app/Backend/ COPY src /app/Backend/src -RUN julia --project=. -e 'using Pkg; Pkg.develop(path="Backend"); Pkg.add("HiGHS"); Pkg.precompile()' +RUN julia --project=. -e 'using Pkg; Pkg.develop(path="Backend"); Pkg.add("HiGHS"); Pkg.add("JuMP"); Pkg.precompile()' COPY docker/startup.jl ./ +# Set timezone to US/Chicago +ENV TZ=US/Chicago +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + # Set default environment variables ENV UCJL_HOST="0.0.0.0" ENV UCJL_PORT="9000" # Run the server -CMD ["julia", "--project=.", "startup.jl"] +CMD ["julia", "--threads", "1", "--procs", "1", "--project=.", "startup.jl"] diff --git a/web/backend/Makefile b/web/backend/Makefile index 6d8588e..fed85d1 100644 --- a/web/backend/Makefile +++ b/web/backend/Makefile @@ -2,4 +2,14 @@ docker-build: docker build . -t ucjl-backend docker-run: - docker run --publish 9000:9000 --rm -it ucjl-backend \ No newline at end of file + docker stop ucjl-backend + docker rm ucjl-backend + docker run \ + --restart always \ + --detach \ + --network custom \ + --name ucjl-backend \ + --volume ucjl_data:/app/Backend/jobs \ + --memory 16g \ + --cpus 4 \ + ucjl-backend diff --git a/web/backend/docker/startup.jl b/web/backend/docker/startup.jl index 7f8e906..ecbc68a 100644 --- a/web/backend/docker/startup.jl +++ b/web/backend/docker/startup.jl @@ -6,6 +6,7 @@ # Load required packages using HiGHS +using JuMP using Backend const UCJL_HOST = get(ENV, "HOST", "0.0.0.0") @@ -16,7 +17,8 @@ println("Host: $UCJL_HOST") println("Port: $UCJL_PORT") println("Press Ctrl+C to stop the server") -server = Backend.start_server(UCJL_HOST, UCJL_PORT; optimizer = HiGHS.Optimizer) +Backend.setup_logger() +server = Backend.start_server(UCJL_HOST, UCJL_PORT; optimizer = optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.001)) try wait() catch e diff --git a/web/backend/src/server.jl b/web/backend/src/server.jl index 8f7261c..13dabcb 100644 --- a/web/backend/src/server.jl +++ b/web/backend/src/server.jl @@ -99,7 +99,7 @@ function start_server(host, port; optimizer) instance, optimizer = optimizer, ) - UnitCommitment.optimize!(model) + UnitCommitment.optimize!(model, UnitCommitment.XavQiuWanThi2019.Method(time_limit=900.0)) solution = UnitCommitment.solution(model) UnitCommitment.write(solution_filename, solution) return diff --git a/web/frontend/Dockerfile b/web/frontend/Dockerfile index b6f7316..759a85a 100644 --- a/web/frontend/Dockerfile +++ b/web/frontend/Dockerfile @@ -4,13 +4,15 @@ WORKDIR /app COPY package*.json ./ RUN npm install COPY . . +ARG REACT_APP_BACKEND_URL +ENV REACT_APP_BACKEND_URL=$REACT_APP_BACKEND_URL RUN npm run build -# Production Stage -FROM node:18-alpine AS production -WORKDIR /app -COPY --from=build /app/build ./build -COPY server.js ./ -RUN npm install --production express -EXPOSE 3000 -CMD ["node", "server.js"] \ No newline at end of file + # Production Stage + FROM node:18-alpine AS production + WORKDIR /app + COPY --from=build /app/build ./build + COPY server.js ./ + RUN npm install --production express + EXPOSE 3000 + CMD ["node", "server.js"] diff --git a/web/frontend/Makefile b/web/frontend/Makefile index 3290c4d..19b9d1f 100644 --- a/web/frontend/Makefile +++ b/web/frontend/Makefile @@ -1,5 +1,14 @@ docker-build: - docker build . -t ucjl-frontend + docker build . \ + --build-arg REACT_APP_BACKEND_URL=https://ucjl.axavier.org/api \ + -t ucjl-frontend docker-run: - docker run -e REACT_APP_BACKEND_URL=http://localhost:9000/api --publish 3000:3000 --rm -it ucjl-frontend \ No newline at end of file + docker stop ucjl-frontend + docker rm ucjl-frontend + docker run \ + --detach \ + --network custom \ + --restart always \ + --name ucjl-frontend \ + ucjl-frontend