mirror of
https://github.com/Fluffy-Bean/GameExpo23.git
synced 2025-05-19 17:54:52 +00:00
Switch to Postgres database
This commit is contained in:
parent
fda3fcc28c
commit
5248ae0123
6 changed files with 67 additions and 19 deletions
|
@ -2,13 +2,15 @@
|
||||||
FROM python:3.10-alpine
|
FROM python:3.10-alpine
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
RUN apk add --no-cache gcc musl-dev linux-headers
|
# RUN apk add --no-cache gcc musl-dev linux-headers
|
||||||
|
RUN apk add --no-cache postgresql-client
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
|
|
||||||
COPY requirements.txt requirements.txt
|
COPY requirements.txt requirements.txt
|
||||||
RUN pip install -r requirements.txt
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
RUN mkdir /storage
|
RUN mkdir /storage
|
||||||
COPY /highscore/ .
|
COPY ./highscore .
|
||||||
|
RUN chmod +x ./run.sh
|
||||||
|
|
||||||
CMD ["gunicorn", "--bind", "highscore:8080", "server:app"]
|
CMD ["./run.sh"]
|
||||||
|
|
|
@ -1,10 +1,21 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
SECRET_KEY = os.getenv('SECRET_KEY')
|
# Purely to make the code a bit more readable
|
||||||
BEARER_TOKEN = os.getenv('BEARER_TOKEN')
|
def env(key):
|
||||||
|
return os.getenv(key)
|
||||||
|
|
||||||
SQLALCHEMY_DATABASE_URI = 'sqlite:///db.sqlite'
|
SECRET_KEY = env('SECRET_KEY')
|
||||||
|
BEARER_TOKEN = env('BEARER_TOKEN')
|
||||||
|
|
||||||
|
user = env('DB_USER')
|
||||||
|
password = env('DB_PASSWORD')
|
||||||
|
host = env('DB_HOST')
|
||||||
|
port = env('DB_PORT')
|
||||||
|
database = env('DB_NAME')
|
||||||
|
|
||||||
|
SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}"
|
||||||
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
||||||
|
SQLALCHEMY_POOL_RECYCLE = 621
|
||||||
|
|
||||||
MIGRATION_DIR = '/data/storage/migrations'
|
MIGRATION_DIR = '/data/storage/migrations'
|
||||||
INSTANCE_DIR = '/data/storage/instance'
|
INSTANCE_DIR = '/data/storage/instance'
|
19
Highscore-Server/highscore/run.sh
Normal file
19
Highscore-Server/highscore/run.sh
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
until pg_isready -d $DB_NAME -h $DB_HOST -p $DB_PORT -U $DB_USER
|
||||||
|
do
|
||||||
|
echo "Waiting for database to start... (5s)"
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Database is ready! Creating tables..."
|
||||||
|
flask --app server db init
|
||||||
|
|
||||||
|
if [ -n flask --app server db check ]; then
|
||||||
|
echo "Database changes detected! Migrating..."
|
||||||
|
flask --app server db migrate
|
||||||
|
flask --app server db upgrade
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting server..."
|
||||||
|
gunicorn --bind highscore:8080 server:app
|
|
@ -1,7 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_migrate import init as migrate_init
|
|
||||||
from extensions import db, migrate, cache
|
from extensions import db, migrate, cache
|
||||||
from config import MIGRATION_DIR, INSTANCE_DIR
|
from config import MIGRATION_DIR, INSTANCE_DIR
|
||||||
from views import blueprint
|
from views import blueprint
|
||||||
|
@ -13,12 +11,7 @@ db.init_app(app)
|
||||||
migrate.init_app(app, db, directory=MIGRATION_DIR)
|
migrate.init_app(app, db, directory=MIGRATION_DIR)
|
||||||
cache.init_app(app)
|
cache.init_app(app)
|
||||||
|
|
||||||
if not os.path.exists(os.path.join(INSTANCE_DIR, 'db.sqlite')):
|
with app.app_context():
|
||||||
with app.app_context():
|
db.create_all()
|
||||||
db.create_all()
|
|
||||||
|
|
||||||
if not os.path.exists(MIGRATION_DIR):
|
|
||||||
with app.app_context():
|
|
||||||
migrate_init(directory=MIGRATION_DIR)
|
|
||||||
|
|
||||||
app.register_blueprint(blueprint)
|
app.register_blueprint(blueprint)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Flask
|
Flask
|
||||||
Flask-SQLAlchemy
|
Flask-SQLAlchemy
|
||||||
|
psycopg2-binary
|
||||||
Flask-Migrate
|
Flask-Migrate
|
||||||
Flask-Caching
|
Flask-Caching
|
||||||
Flask-wtf
|
Flask-wtf
|
||||||
|
|
|
@ -11,8 +11,21 @@ services:
|
||||||
- ./Caddy/data:/data
|
- ./Caddy/data:/data
|
||||||
- ./Caddy/config:/config
|
- ./Caddy/config:/config
|
||||||
environment:
|
environment:
|
||||||
- ACME_AGREE=true
|
DOMAIN: expo.leggy.dev
|
||||||
- DOMAIN=expo.leggy.dev
|
links:
|
||||||
|
- highscore
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres:alpine
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
volumes:
|
||||||
|
- ./Postgress/data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: root
|
||||||
|
POSTGRES_PASSWORD: secret
|
||||||
|
POSTGRES_DB: database
|
||||||
|
POSTGRES_PORT: 5432
|
||||||
links:
|
links:
|
||||||
- highscore
|
- highscore
|
||||||
|
|
||||||
|
@ -20,6 +33,15 @@ services:
|
||||||
build: ./Highscore-Server
|
build: ./Highscore-Server
|
||||||
volumes:
|
volumes:
|
||||||
- ./Highscore-Server/data:/data/storage
|
- ./Highscore-Server/data:/data/storage
|
||||||
|
- ./Highscore-Server/logs:/data/logs
|
||||||
|
# Pass in the code to the container so I don't
|
||||||
|
# have to rebuild it every time during development
|
||||||
|
- ./Highscore-Server/highscore:/data/highscore
|
||||||
environment:
|
environment:
|
||||||
- FLASK_KEY=secret
|
FLASK_KEY: secret
|
||||||
- BEARER_TOKEN=1234
|
BEARER_TOKEN: 1234
|
||||||
|
DB_USER: root
|
||||||
|
DB_PASSWORD: secret
|
||||||
|
DB_HOST: db
|
||||||
|
DB_PORT: 5432
|
||||||
|
DB_NAME: database
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue