Switch to dockerized postgres
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
docker/.env
|
docker/.env
|
||||||
backend/django/seatstock_django/db.sqlite3
|
backend/django/seatstock_django/db.sqlite3
|
||||||
|
docker/volumes/postgresql
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# base image
|
# base image
|
||||||
FROM python:3.8
|
FROM python:3.9
|
||||||
# setup environment variable
|
# setup environment variable
|
||||||
ENV DockerHOME=/home/app/webapp
|
ENV DockerHOME=/home/app/webapp
|
||||||
|
|
||||||
|
@ -2,5 +2,10 @@ django ~= 4.0
|
|||||||
authlib ~= 1.0
|
authlib ~= 1.0
|
||||||
python-dotenv ~= 0.19
|
python-dotenv ~= 0.19
|
||||||
requests ~= 2.27
|
requests ~= 2.27
|
||||||
pymongo ~= 3.11
|
psycopg2
|
||||||
dnspython
|
#pymongo ~= 3.6
|
||||||
|
#dnspython
|
||||||
|
#mongoengine
|
||||||
|
#djongo
|
||||||
|
#pytz
|
||||||
|
#django-utils-six
|
||||||
|
Binary file not shown.
@ -1,6 +1,90 @@
|
|||||||
from django.shortcuts import render
|
#from django.shortcuts import render
|
||||||
|
#from django.http import HttpResponse
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
#def index(request):
|
||||||
|
# return HttpResponse("<h1>Hello and welcome to my first <u>Django App</u> project!</h1>")
|
||||||
|
|
||||||
|
|
||||||
|
import json
|
||||||
|
from authlib.integrations.django_client import OAuth
|
||||||
|
from django.conf import settings
|
||||||
|
from django.shortcuts import redirect, render, redirect
|
||||||
|
from django.urls import reverse
|
||||||
|
from urllib.parse import quote_plus, urlencode
|
||||||
|
import os
|
||||||
|
|
||||||
|
from pymongo.mongo_client import MongoClient
|
||||||
|
from pymongo.server_api import ServerApi
|
||||||
|
from dotenv import load_dotenv, find_dotenv
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Password validation
|
||||||
|
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
ENV_FILE = find_dotenv()
|
||||||
|
if ENV_FILE:
|
||||||
|
load_dotenv(ENV_FILE)
|
||||||
|
|
||||||
|
MONGO_DB_USERNAME = os.environ.get("MONGO_DB_USERNAME")
|
||||||
|
MONGO_DB_PASSWORD = os.environ.get("MONGO_DB_PASSWORD")
|
||||||
|
MONGO_DB_HOST = os.environ.get("MONGO_DB_HOST")
|
||||||
|
|
||||||
|
#uri = 'mongodb+srv://'+MONGO_DB_USERNAME+':'+MONGO_DB_PASSWORD+'@'+MONGO_DB_HOST+'/?retryWrites=true&w=majority'
|
||||||
|
#client = MongoClient(uri)
|
||||||
|
|
||||||
|
# Send a ping to confirm a successful connection
|
||||||
|
#try:
|
||||||
|
# client.admin.command('ping')
|
||||||
|
# print("Pinged your deployment. You successfully connected to MongoDB!")
|
||||||
|
#except Exception as e:
|
||||||
|
# print(e)
|
||||||
|
|
||||||
|
# AUTH0
|
||||||
|
oauth = OAuth()
|
||||||
|
|
||||||
|
oauth.register(
|
||||||
|
"auth0",
|
||||||
|
client_id=settings.AUTH0_CLIENT_ID,
|
||||||
|
client_secret=settings.AUTH0_CLIENT_SECRET,
|
||||||
|
client_kwargs={
|
||||||
|
"scope": "openid profile email",
|
||||||
|
},
|
||||||
|
server_metadata_url=f"https://{settings.AUTH0_DOMAIN}/.well-known/openid-configuration",
|
||||||
|
)
|
||||||
|
|
||||||
|
def login(request):
|
||||||
|
return oauth.auth0.authorize_redirect(
|
||||||
|
request, request.build_absolute_uri(reverse("callback"))
|
||||||
|
)
|
||||||
|
|
||||||
|
def callback(request):
|
||||||
|
token = oauth.auth0.authorize_access_token(request)
|
||||||
|
request.session["user"] = token
|
||||||
|
return redirect(request.build_absolute_uri(reverse("index")))
|
||||||
|
|
||||||
|
def logout(request):
|
||||||
|
request.session.clear()
|
||||||
|
|
||||||
|
return redirect(
|
||||||
|
f"https://{settings.AUTH0_DOMAIN}/v2/logout?"
|
||||||
|
+ urlencode(
|
||||||
|
{
|
||||||
|
"returnTo": request.build_absolute_uri(reverse("index")),
|
||||||
|
"client_id": settings.AUTH0_CLIENT_ID,
|
||||||
|
},
|
||||||
|
quote_via=quote_plus,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
return HttpResponse("<h1>Hello and welcome to my first <u>Django App</u> project!</h1>")
|
return render(
|
||||||
|
request,
|
||||||
|
"index.html",
|
||||||
|
context={
|
||||||
|
"session": request.session.get("user"),
|
||||||
|
"pretty": json.dumps(request.session.get("user"), indent=4),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
@ -14,6 +14,24 @@ import os
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from dotenv import load_dotenv, find_dotenv
|
from dotenv import load_dotenv, find_dotenv
|
||||||
|
|
||||||
|
# Needed to use mongodb as default 'DATABASES'
|
||||||
|
#import mongoengine, djongo
|
||||||
|
#from pymongo.mongo_client import MongoClient
|
||||||
|
#from pymongo.server_api import ServerApi
|
||||||
|
|
||||||
|
ENV_FILE = find_dotenv()
|
||||||
|
if ENV_FILE:
|
||||||
|
load_dotenv(ENV_FILE)
|
||||||
|
|
||||||
|
#MONGO_DB_USERNAME = os.environ.get("MONGO_DB_USERNAME")
|
||||||
|
#MONGO_DB_PASSWORD = os.environ.get("MONGO_DB_PASSWORD")
|
||||||
|
#MONGO_DB_HOST = os.environ.get("MONGO_DB_HOST")
|
||||||
|
|
||||||
|
#uri = 'mongodb+srv://'+MONGO_DB_USERNAME+':'+MONGO_DB_PASSWORD+'@'+MONGO_DB_HOST+'/?retryWrites=true&w=majority'
|
||||||
|
#mongoengine.connect(db="default", host=uri)
|
||||||
|
#client = MongoClient(uri)
|
||||||
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
@ -33,7 +51,7 @@ ALLOWED_HOSTS = ['docker-django', 'localhost', 'seatstock.duckdns.org']
|
|||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
'djangoapp',
|
'django_mongo',
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
@ -88,9 +106,35 @@ WSGI_APPLICATION = 'seatstock_django.wsgi.application'
|
|||||||
#}
|
#}
|
||||||
|
|
||||||
|
|
||||||
ENV_FILE = find_dotenv()
|
#DATABASES = {
|
||||||
if ENV_FILE:
|
# 'default': {
|
||||||
load_dotenv(ENV_FILE)
|
# 'ENGINE' : 'djongo',
|
||||||
|
# 'NAME' : 'seatstock',
|
||||||
|
# 'ENFORCE_SCHEMA': False,
|
||||||
|
# 'CLIENT': {
|
||||||
|
# 'host': "mongodb+srv://seatstock:3MSiYdBhf43gPvBa@cluster0.7s1vitu.mongodb.net/?retryWrites=true&w=majority"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
DB_NAME = os.environ.get("DB_NAME")
|
||||||
|
DB_USER = os.environ.get("DB_USER")
|
||||||
|
DB_PASSWORD = os.environ.get("DB_PASSWORD")
|
||||||
|
DB_HOST = os.environ.get("DB_HOST")
|
||||||
|
DB_PORT = os.environ.get("DB_PORT")
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||||
|
'NAME': DB_NAME,
|
||||||
|
'USER': DB_USER,
|
||||||
|
'PASSWORD': DB_PASSWORD,
|
||||||
|
'HOST': DB_HOST,
|
||||||
|
'PORT': DB_PORT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
|
||||||
|
@ -21,8 +21,8 @@ from . import views
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path("",include('django_mongo.urls')),
|
# path("",include('django_mongo.urls')),
|
||||||
# path("", views.index, name="index"),
|
path("", views.index, name="index"),
|
||||||
path("login", views.login, name="login"),
|
path("login", views.login, name="login"),
|
||||||
path("logout", views.logout, name="logout"),
|
path("logout", views.logout, name="logout"),
|
||||||
path("callback", views.callback, name="callback"),
|
path("callback", views.callback, name="callback"),
|
||||||
|
@ -15,15 +15,34 @@ services:
|
|||||||
image: docker-django
|
image: docker-django
|
||||||
container_name: seatstock-django
|
container_name: seatstock-django
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
# ports:
|
||||||
- "8000:8000"
|
# - "8000:8000"
|
||||||
volumes:
|
volumes:
|
||||||
- ../backend/django:/home/app/webapp
|
- ../backend/django:/home/app/webapp
|
||||||
# - ../frontend/templates:/home/app/webapp/seatstock_django/seatstock_django/templates
|
- ../frontend/templates:/home/app/webapp/seatstock_django/seatstock_django/templates
|
||||||
# - ../frontend/static:/home/app/webapp/seatstock_django/seatstock_django/static
|
- ../frontend/static:/home/app/webapp/seatstock_django/seatstock_django/static
|
||||||
- ../frontend/templates:/home/app/webapp/seatstock_django/django_mongo/templates
|
- ../frontend/templates:/home/app/webapp/seatstock_django/django_mongo/templates
|
||||||
- ../frontend/static:/home/app/webapp/seatstock_django/django_mongo/static
|
- ../frontend/static:/home/app/webapp/seatstock_django/django_mongo/static
|
||||||
environment:
|
environment:
|
||||||
- AUTH0_DOMAIN=${AUTH0_DOMAIN}
|
- AUTH0_DOMAIN=${AUTH0_DOMAIN}
|
||||||
- AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
|
- AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
|
||||||
- AUTH0_CLIENT_SECRET=${AUTH0_CLIENT_SECRET}
|
- AUTH0_CLIENT_SECRET=${AUTH0_CLIENT_SECRET}
|
||||||
|
- MONGO_DB_USERNAME=${MONGO_DB_USERNAME}
|
||||||
|
- MONGO_DB_PASSWORD=${MONGO_DB_PASSWORD}
|
||||||
|
- MONGO_DB_HOST=${MONGO_DB_HOST}
|
||||||
|
- DB_NAME=${DB_NAME}
|
||||||
|
- DB_USER=${DB_USER}
|
||||||
|
- DB_PASSWORD=${DB_PASSWORD}
|
||||||
|
- DB_HOST=${DB_HOST}
|
||||||
|
- DB_PORT=${DB_PORT}
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
image: postgres:latest
|
||||||
|
container_name: seatstock-postgres
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./volumes/postgresql:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||||
|
- POSTGRES_USER=${DB_USER}
|
||||||
|
- POSTGRES_DB=${DB_NAME}
|
||||||
|
Reference in New Issue
Block a user