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
|
||||
|
||||
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
|
||||
|
||||
COPY requirements.txt requirements.txt
|
||||
RUN pip install -r requirements.txt
|
||||
|
||||
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
|
||||
|
||||
SECRET_KEY = os.getenv('SECRET_KEY')
|
||||
BEARER_TOKEN = os.getenv('BEARER_TOKEN')
|
||||
# Purely to make the code a bit more readable
|
||||
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_POOL_RECYCLE = 621
|
||||
|
||||
MIGRATION_DIR = '/data/storage/migrations'
|
||||
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
|
||||
|
||||
from flask import Flask
|
||||
from flask_migrate import init as migrate_init
|
||||
from extensions import db, migrate, cache
|
||||
from config import MIGRATION_DIR, INSTANCE_DIR
|
||||
from views import blueprint
|
||||
|
@ -13,12 +11,7 @@ db.init_app(app)
|
|||
migrate.init_app(app, db, directory=MIGRATION_DIR)
|
||||
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()
|
||||
|
||||
if not os.path.exists(MIGRATION_DIR):
|
||||
with app.app_context():
|
||||
migrate_init(directory=MIGRATION_DIR)
|
||||
|
||||
app.register_blueprint(blueprint)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
Flask
|
||||
Flask-SQLAlchemy
|
||||
psycopg2-binary
|
||||
Flask-Migrate
|
||||
Flask-Caching
|
||||
Flask-wtf
|
||||
|
|
|
@ -11,8 +11,21 @@ services:
|
|||
- ./Caddy/data:/data
|
||||
- ./Caddy/config:/config
|
||||
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:
|
||||
- highscore
|
||||
|
||||
|
@ -20,6 +33,15 @@ services:
|
|||
build: ./Highscore-Server
|
||||
volumes:
|
||||
- ./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:
|
||||
- FLASK_KEY=secret
|
||||
- BEARER_TOKEN=1234
|
||||
FLASK_KEY: secret
|
||||
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