Compare commits
4 Commits
e1f7404c8d
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
62ed1badc2 | ||
|
|
9801ba4ba6 | ||
|
|
f6fcf82eae | ||
|
|
cf3abe92f5 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -5,8 +5,8 @@ __pycache__
|
|||||||
|
|
||||||
# dist folders
|
# dist folders
|
||||||
dist
|
dist
|
||||||
frontend/dist
|
app/frontend/dist
|
||||||
backend/dist
|
app/backend/dist
|
||||||
|
|
||||||
# sqlite file
|
# sqlite file
|
||||||
*.db
|
*.db
|
||||||
|
|||||||
51
Dockerfile
51
Dockerfile
@@ -1,51 +0,0 @@
|
|||||||
# 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
|
|
||||||
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
|
|
||||||
|
|
||||||
COPY --from=0 /srv/cprush-stats /srv/cprush-stats
|
|
||||||
|
|
||||||
RUN corepack enable
|
|
||||||
|
|
||||||
# build the frontend
|
|
||||||
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
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
WORKDIR loader
|
|
||||||
|
|
||||||
EXPOSE 3001
|
|
||||||
ENV NODE_ENV=production
|
|
||||||
ENV MEMCACHE_ADDR="localhost:11211"
|
|
||||||
|
|
||||||
WORKDIR /srv/cprush-stats
|
|
||||||
RUN npm install
|
|
||||||
CMD ["sh", "-c", "node app.js -m $MEMCACHE_ADDR"]
|
|
||||||
43
app/Dockerfile
Normal file
43
app/Dockerfile
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
FROM node:23 AS frontend
|
||||||
|
|
||||||
|
RUN corepack enable
|
||||||
|
|
||||||
|
# build the frontend
|
||||||
|
COPY ./frontend /frontend
|
||||||
|
WORKDIR /frontend
|
||||||
|
RUN npm install
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
VOLUME /srv/cprush-stats/data
|
||||||
|
|
||||||
|
EXPOSE 3001
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
ENV MEMCACHE_ADDR="localhost:11211"
|
||||||
|
|
||||||
|
WORKDIR /srv/cprush-stats
|
||||||
|
RUN npm install
|
||||||
|
CMD ["sh", "-c", "node app.js -m $MEMCACHE_ADDR"]
|
||||||
@@ -19,7 +19,6 @@ const port = process.argv[process.argv.indexOf('-p')]
|
|||||||
const memcache_addr = process.argv[process.argv.indexOf('-m')]
|
const memcache_addr = process.argv[process.argv.indexOf('-m')]
|
||||||
? process.argv[process.argv.indexOf('-m') + 1]
|
? process.argv[process.argv.indexOf('-m') + 1]
|
||||||
: 'localhost:11211'
|
: 'localhost:11211'
|
||||||
// const memcache = new memcached('localhost:11211', {})
|
|
||||||
const memcachep = new Memcache(memcache_addr)
|
const memcachep = new Memcache(memcache_addr)
|
||||||
|
|
||||||
addGameApis(app, jsonParser, memcachep)
|
addGameApis(app, jsonParser, memcachep)
|
||||||
@@ -25,7 +25,7 @@ export const roleNames: RoleName[] = [
|
|||||||
'Rocker'
|
'Rocker'
|
||||||
]
|
]
|
||||||
|
|
||||||
const databasePath = './testdb.db'
|
const databasePath = './data/testdb.db'
|
||||||
|
|
||||||
export const database = new Sequelize({
|
export const database = new Sequelize({
|
||||||
dialect: 'sqlite',
|
dialect: 'sqlite',
|
||||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 526 B After Width: | Height: | Size: 526 B |
@@ -4,17 +4,31 @@ networks:
|
|||||||
cprush-net:
|
cprush-net:
|
||||||
external: false
|
external: false
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
cprush-loader-data:
|
||||||
|
|
||||||
services:
|
services:
|
||||||
cprush:
|
cprush:
|
||||||
image: potato
|
# image: potato
|
||||||
networks:
|
build: ./app
|
||||||
- cprush-net
|
|
||||||
environment:
|
environment:
|
||||||
- MEMCACHE_ADDR=memcache:11211
|
- MEMCACHE_ADDR=memcache:11211
|
||||||
|
volumes:
|
||||||
|
- cprush-loader-data:/srv/cprush-stats/data
|
||||||
|
networks:
|
||||||
|
- cprush-net
|
||||||
ports:
|
ports:
|
||||||
- 3001:3001
|
- 3001:3001
|
||||||
depends_on:
|
depends_on:
|
||||||
- memcache
|
- memcache
|
||||||
|
- loader
|
||||||
|
loader:
|
||||||
|
build: ./loader
|
||||||
|
environment:
|
||||||
|
- REPLAY_TIME=600
|
||||||
|
volumes:
|
||||||
|
- cprush-loader-data:/loader/data
|
||||||
|
|
||||||
memcache:
|
memcache:
|
||||||
image: memcached
|
image: memcached
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
68
install.sh
68
install.sh
@@ -1,68 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
|
||||||
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "---"
|
|
||||||
echo "Creating user rushstats"
|
|
||||||
echo "---"
|
|
||||||
if [id rushstats >/dev/null 2>&1]; then
|
|
||||||
echo "rushstats user already exists, skipping."
|
|
||||||
else
|
|
||||||
useradd -s /sbin/nologin rushstats
|
|
||||||
echo "User rushstats created with /sbin/nologin"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "---"
|
|
||||||
echo "Moving the distributable folder into /srv/gamestats"
|
|
||||||
echo "---"
|
|
||||||
if [ -d /srv/gamestats ]; then
|
|
||||||
echo "/srv/gamestats already exists; removing"
|
|
||||||
rm -r /srv/rushstats
|
|
||||||
fi
|
|
||||||
mkdir /srv/gamestats
|
|
||||||
cp -r "$parent_path"/dist/* /srv/gamestats
|
|
||||||
cp -r "$parent_path"/loader/* /srv/gamestats
|
|
||||||
chown -R rushstats:rushstats /srv/gamestats
|
|
||||||
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "---"
|
|
||||||
echo "Creating the systemd services."
|
|
||||||
echo "---"
|
|
||||||
SYSTEMD_SERVICE_FILE=/etc/systemd/system/rushstats.service
|
|
||||||
if [ -f $SYSTEMD_SERVICE_FILE ]; then
|
|
||||||
echo "Service already exists; removing."
|
|
||||||
rm $SYSTEMD_SERVICE_FILE
|
|
||||||
fi
|
|
||||||
touch $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "[Unit]" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "Description=Stats Server for Cyberpunk Rush" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "After=network.target" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "[Service]" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "Type=simple" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "WorkingDirectory=/srv/gamestats"
|
|
||||||
echo "ExecStart=node /srv/gamestats/app.js" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "Restart=on-failure" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "[Install]" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "WantedBy=multi-user.target" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
echo "" >> $SYSTEMD_SERVICE_FILE
|
|
||||||
|
|
||||||
echo "Created new service."
|
|
||||||
echo cat $SYSTEMD_SERVICE_FILE
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "---"
|
|
||||||
echo "Reloading daemons and starting service"
|
|
||||||
echo "---"
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable rushstats.service
|
|
||||||
systemctl start rushstats.service
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "---"
|
|
||||||
echo "Creating the cron job to refresh the database."
|
|
||||||
echo "---"
|
|
||||||
15
loader/Dockerfile
Normal file
15
loader/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Setup the loader
|
||||||
|
FROM python:3.12 AS loader
|
||||||
|
|
||||||
|
COPY . /loader
|
||||||
|
|
||||||
|
VOLUME /loader/data
|
||||||
|
|
||||||
|
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"]
|
||||||
@@ -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
|
|
||||||
@@ -1,9 +1,16 @@
|
|||||||
|
import time
|
||||||
|
import argparse
|
||||||
|
|
||||||
from databasesync import createDatabase
|
from databasesync import createDatabase
|
||||||
from sheetloader import downloadGamesCSV, downloadCharactersCSV
|
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"
|
CHARACTER_DATA_OUT_FILE = "CharacterData.csv"
|
||||||
GAME_DATA_OUT_FILE = "GameData.csv"
|
GAME_DATA_OUT_FILE = "GameData.csv"
|
||||||
DATABASE_NAME = "testdb.db"
|
DATABASE_NAME = "data/testdb.db"
|
||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
downloadCharactersCSV(CHARACTER_DATA_OUT_FILE)
|
downloadCharactersCSV(CHARACTER_DATA_OUT_FILE)
|
||||||
@@ -11,4 +18,10 @@ def execute():
|
|||||||
createDatabase(DATABASE_NAME, GAME_DATA_OUT_FILE, CHARACTER_DATA_OUT_FILE)
|
createDatabase(DATABASE_NAME, GAME_DATA_OUT_FILE, CHARACTER_DATA_OUT_FILE)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
print("starting up loader.")
|
||||||
|
print("replay time: ", args.replay_time)
|
||||||
execute()
|
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()
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
*/10 * * * * python3 /loader/createrushdatabase.py
|
|
||||||
31
setup.sh
31
setup.sh
@@ -1,31 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
|
||||||
|
|
||||||
mkdir "$parent_path"/dist
|
|
||||||
|
|
||||||
# Build and move the front end distribution into the output dist folder
|
|
||||||
cd "$parent_path"/frontend
|
|
||||||
npm install
|
|
||||||
npm run build
|
|
||||||
cd ../
|
|
||||||
cp -rf ./frontend/dist ./dist/frontend
|
|
||||||
|
|
||||||
# Build and move the back end distribution into the output dist folder
|
|
||||||
cd "$parent_path"/backend
|
|
||||||
npm install
|
|
||||||
npm run build
|
|
||||||
cd ../
|
|
||||||
cp -f ./backend/dist/* ./dist
|
|
||||||
|
|
||||||
|
|
||||||
# Build and move the database into the output dist folder
|
|
||||||
cd "$parent_path"/loader
|
|
||||||
python3 createrushdatabase.py
|
|
||||||
cd ../
|
|
||||||
cp -r ./loader/* ./dist
|
|
||||||
|
|
||||||
# Move the package into the dist folder and install the needed modules
|
|
||||||
cd "$parent_path"
|
|
||||||
cp ./backend/package.json ./dist/package.json
|
|
||||||
cd "$parent_path"/dist
|
|
||||||
npm install
|
|
||||||
Reference in New Issue
Block a user