From 9801ba4ba6a2a1f891777f876d65897b0707e4a5 Mon Sep 17 00:00:00 2001 From: iamBadgers Date: Mon, 2 Jun 2025 20:45:25 -0700 Subject: [PATCH] setup timer for create database. --- app/Dockerfile | 50 +++++++++++++++--------------------- app/backend/src/app.ts | 1 - docker-compose.yaml | 7 ++++- loader/Dockerfile | 11 ++++++++ loader/chron-script.sh | 15 ----------- loader/createrushdatabase.py | 15 +++++++++++ loader/loader-crm | 1 - 7 files changed, 52 insertions(+), 48 deletions(-) create mode 100644 loader/Dockerfile delete mode 100644 loader/chron-script.sh delete mode 100644 loader/loader-crm diff --git a/app/Dockerfile b/app/Dockerfile index b5db781..1a254a2 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -1,23 +1,4 @@ -# FROM ubuntu:24.04 - -# ADD ./loader/loader-crm /etc/cron.d/loader-crm -# RUN chmod 0644 /etc/cron/loader-crm -# RUN touch /var/log/chron.log - -# RUN apt-get update -# RUN apt-get -y install cron -# RUN systemctl enable cron - -# Setup the loader -FROM python:3.12 AS loader -COPY ./loader /srv/cprush-stats -WORKDIR /srv/cprush-stats -RUN python -m pip install --upgrade pip -RUN pip install -r requirements.txt - -CMD ["python3", "createrushdatabase.py"] - -FROM node:23 +FROM node:23 AS frontend RUN corepack enable @@ -25,27 +6,36 @@ RUN corepack enable COPY ./frontend /frontend WORKDIR /frontend RUN npm install -RUN npm run build -RUN mkdir -p /srv/cprush-stats/frontend -RUN cp -rf ./dist/* /srv/cprush-stats/frontend +CMD ["npm", "run", "build"] +# RUN mkdir -p /srv/cprush-stats/frontend +# RUN cp -rf ./dist/* /srv/cprush-stats/frontend + +FROM node:23 AS backend + +RUN corepack enable # build the backend COPY ./backend /backend WORKDIR /backend RUN npm install -RUN npm run build -RUN mkdir -p /srv/cprush-stats -RUN cp -rf ./dist/* /srv/cprush-stats -RUN cp package.json /srv/cprush-stats/package.json +CMD ["npm", "run", "build"] +# RUN mkdir -p /srv/cprush-stats +# RUN cp -rf ./dist/* /srv/cprush-stats +# RUN cp package.json /srv/cprush-stats/package.json -WORKDIR loader +FROM node:23 AS server + +RUN corepack enable + +RUN mkdir -p /srv/cprush-stats/frontend +COPY --from=frontend /frontend/dist /srv/cprush-stats/frontend +COPY --from=backend /backend/dist /srv/cprush-stats +COPY --from=backend /backend/package.json /srv/cprush-stats/package.json EXPOSE 3001 ENV NODE_ENV=production ENV MEMCACHE_ADDR="localhost:11211" -COPY --from=loader /srv/cprush-stats/testdb.db /srv/cprush-stats/testdb.db - WORKDIR /srv/cprush-stats RUN npm install CMD ["sh", "-c", "node app.js -m $MEMCACHE_ADDR"] \ No newline at end of file diff --git a/app/backend/src/app.ts b/app/backend/src/app.ts index 10db88a..b48f725 100644 --- a/app/backend/src/app.ts +++ b/app/backend/src/app.ts @@ -19,7 +19,6 @@ const port = process.argv[process.argv.indexOf('-p')] const memcache_addr = process.argv[process.argv.indexOf('-m')] ? process.argv[process.argv.indexOf('-m') + 1] : 'localhost:11211' -// const memcache = new memcached('localhost:11211', {}) const memcachep = new Memcache(memcache_addr) addGameApis(app, jsonParser, memcachep) diff --git a/docker-compose.yaml b/docker-compose.yaml index 6953aec..3f8d992 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,7 +6,8 @@ networks: services: cprush: - image: potato + # image: potato + build: ./app networks: - cprush-net environment: @@ -15,6 +16,10 @@ services: - 3001:3001 depends_on: - memcache + loader: + build: ./loader + environment: + - REPLAY_TIME=600 memcache: image: memcached networks: diff --git a/loader/Dockerfile b/loader/Dockerfile new file mode 100644 index 0000000..11a1c9f --- /dev/null +++ b/loader/Dockerfile @@ -0,0 +1,11 @@ +# Setup the loader +FROM python:3.12 AS loader +COPY . /loader +WORKDIR /loader +RUN python -m pip install --upgrade pip +RUN pip install -r requirements.txt + +ENV REPLAY_TIME=0 + + +CMD ["sh", "-c", "python3 createrushdatabase.py -r $REPLAY_TIME"] \ No newline at end of file diff --git a/loader/chron-script.sh b/loader/chron-script.sh deleted file mode 100644 index f0c7e2a..0000000 --- a/loader/chron-script.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) - -PYTHON_VEN="$parent_path"/venv/bin/python -if [ ! -f $PYTHON_VEN ]; then - echo "Setting up new VENV" - python3 -m venv venv - echo "Installing requirements." - source ./venv/bin/activate - pip install -r requirements.txt - deactivate -fi - -echo "Start DB Creation" -$parent_path/venv/bin/python createrushdatabase.py diff --git a/loader/createrushdatabase.py b/loader/createrushdatabase.py index f1d223f..36d7d33 100644 --- a/loader/createrushdatabase.py +++ b/loader/createrushdatabase.py @@ -1,9 +1,18 @@ +import time +import argparse + from databasesync import createDatabase from sheetloader import downloadGamesCSV, downloadCharactersCSV +parser = argparse.ArgumentParser() +parser.add_argument("-r", "--replay_time", type=int) +args = parser.parse_args() + CHARACTER_DATA_OUT_FILE = "CharacterData.csv" GAME_DATA_OUT_FILE = "GameData.csv" DATABASE_NAME = "testdb.db" + + def execute(): downloadCharactersCSV(CHARACTER_DATA_OUT_FILE) @@ -11,4 +20,10 @@ def execute(): createDatabase(DATABASE_NAME, GAME_DATA_OUT_FILE, CHARACTER_DATA_OUT_FILE) if __name__ == "__main__": + print("starting up loader.") + print("replay time: ", args.replay_time) execute() + while args.replay_time and args.replay_time > 0: + print("re-run in ", args.replay_time, "seconds", flush=True) + time.sleep(args.replay_time) + execute() diff --git a/loader/loader-crm b/loader/loader-crm deleted file mode 100644 index 3c0852d..0000000 --- a/loader/loader-crm +++ /dev/null @@ -1 +0,0 @@ -*/10 * * * * python3 /loader/createrushdatabase.py \ No newline at end of file