Progress on production
This commit is contained in:
parent
b3d0510161
commit
8fd90940bc
1
.my_pgpass
Normal file
1
.my_pgpass
Normal file
@ -0,0 +1 @@
|
|||||||
|
localhost:5432:bloonsworld:password123
|
||||||
5
.pg_service.conf
Normal file
5
.pg_service.conf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[bloonsworld]
|
||||||
|
host=localhost
|
||||||
|
user=bloonsworld
|
||||||
|
dbname=bloonsworld
|
||||||
|
port=5432
|
||||||
12
app/Dockerfile
Normal file
12
app/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
FROM python:3.12.2-alpine3.21
|
||||||
|
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
|
PYTHONUNBUFFERED=1 \
|
||||||
|
PIP_NO_CACHE_DIR=1
|
||||||
|
|
||||||
|
WORKDIR app
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install -r requirements.txt && \
|
||||||
|
pip install gunicorn
|
||||||
|
|
||||||
|
COPY . .
|
||||||
@ -10,8 +10,11 @@ For the full list of settings and their values, see
|
|||||||
https://docs.djangoproject.com/en/3.2/ref/settings/
|
https://docs.djangoproject.com/en/3.2/ref/settings/
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
|
from sys import platform
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
from django.db.backends.postgresql.psycopg_any import IsolationLevel
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
@ -19,12 +22,16 @@ BASE_DIR = Path(__file__).resolve().parent.parent
|
|||||||
# Quick-start development settings - unsuitable for production
|
# Quick-start development settings - unsuitable for production
|
||||||
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
|
||||||
|
|
||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
|
||||||
SECRET_KEY = 'django-insecure-)e!wy4)=xinnd!d(iuw6*-tf^-)ptiwnttwf+9ql%*jy63wtd8'
|
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
|
if platform != "win32":
|
||||||
|
with open("/secret", "r") as f:
|
||||||
|
SECRET_KEY = f.read()
|
||||||
|
else:
|
||||||
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
|
SECRET_KEY = 'django-insecure-)e!wy4)=xinnd!d(iuw6*-tf^-)ptiwnttwf+9ql%*jy63wtd8'
|
||||||
|
|
||||||
ALLOWED_HOSTS = ["*"]
|
ALLOWED_HOSTS = ["*"]
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
@ -87,12 +94,22 @@ WSGI_APPLICATION = 'settings.wsgi.application'
|
|||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
|
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {}
|
||||||
'default': {
|
|
||||||
|
if DEBUG:
|
||||||
|
DATABASES["default"] = {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
'NAME': BASE_DIR / 'db.sqlite3',
|
'NAME': BASE_DIR / 'db.sqlite3',
|
||||||
}
|
}
|
||||||
}
|
else:
|
||||||
|
DATABASES["default"] = {
|
||||||
|
"ENGINE": "django.db.backends.postgresql",
|
||||||
|
"OPTIONS": {
|
||||||
|
"service": "bloonsworld_db",
|
||||||
|
"passfile": ".my_pgpass",
|
||||||
|
# "isolation_level": IsolationLevel.SERIALIZABLE,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
@ -142,4 +159,6 @@ MEDIA_URL = "/media/"
|
|||||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||||
|
|
||||||
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap4"
|
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap4"
|
||||||
CRISPY_TEMPLATE_PACK = "bootstrap4"
|
CRISPY_TEMPLATE_PACK = "bootstrap4"
|
||||||
|
|
||||||
|
CRISPY_FAIL_SILENTLY = not DEBUG
|
||||||
@ -14,3 +14,4 @@ from django.core.wsgi import get_wsgi_application
|
|||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')
|
||||||
|
|
||||||
application = get_wsgi_application()
|
application = get_wsgi_application()
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,7 @@ class LoginView(TemplateView):
|
|||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return render(request=request, template_name="users/login.html", context={"form": form})
|
return render(request=request, template_name="users/login.html", context={"form": form})
|
||||||
user = form.get_user()
|
user = form.get_user()
|
||||||
|
bloonsa_util.init_player(request=request)
|
||||||
login(request=request, user=user)
|
login(request=request, user=user)
|
||||||
bloonsa_util.log(player=user.player,
|
bloonsa_util.log(player=user.player,
|
||||||
action=actions.login)
|
action=actions.login)
|
||||||
@ -48,6 +49,7 @@ class RegisterView(TemplateView):
|
|||||||
class LogoutView(TemplateView):
|
class LogoutView(TemplateView):
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
|
bloonsa_util.init_player(request=request)
|
||||||
bloonsa_util.log(request=request,
|
bloonsa_util.log(request=request,
|
||||||
action=actions.logout)
|
action=actions.logout)
|
||||||
logout(request)
|
logout(request)
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
services:
|
||||||
|
bloonsworld:
|
||||||
|
build: ./app
|
||||||
|
volumes:
|
||||||
|
- ./.media:/app/media:ro
|
||||||
|
- ./.static:/app/static:rw
|
||||||
|
- ./.django:/app/data:rw
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
python manage.py collectstatic --noinput
|
||||||
|
gunicorn --chdir /app --bind :80 --workers 3 Settings.wsgi:application
|
||||||
|
environment:
|
||||||
|
- DJANGO_SECRET_KEY
|
||||||
|
- DJANGO_ALLOWED_HOSTS
|
||||||
|
- DJANGO_DEBUG
|
||||||
|
networks:
|
||||||
|
- nginx_private
|
||||||
|
- bloonsworld
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
bloonsworld-db:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
- bloonsworld
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
nginx_private:
|
||||||
|
external: true
|
||||||
|
bloonsworld:
|
||||||
Loading…
Reference in New Issue
Block a user