diff --git a/Dockerfile b/Dockerfile
index 04896ce..f0aa4ae 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -86,9 +86,8 @@ EOT
# See .
STOPSIGNAL SIGINT
-COPY --from=build --chown=app:app --chmod=u+rw /app /app
+COPY --from=build --chown=app:app /app /app
-COPY --from=ghcr.io/astral-sh/uv:0.7.2 /uv /app/bin/uv
COPY --chown=app:app --chmod=700 /scripts/entrypoint.sh /entrypoint.sh
COPY --chown=app:app --chmod=700 /scripts/deploy.sh /deploy.sh
COPY --chown=app:app --chmod=700 /manage.py /app/manage.py
diff --git a/docker-compose.yml b/docker-compose.yml
index 40ea63c..dbde604 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,41 +1,30 @@
services:
web:
build: .
- command: bash -c "cd /code && uv pip install --editable . --no-deps && python manage.py runserver 0.0.0.0:8000"
+ #command: ["django-admin", "runserver", "0.0.0.0:8000"]
ports:
- - "8000:8000"
- restart: unless-stopped
- environment:
- - DEBUG=true
+ - 8000:8000
+ restart: always
volumes:
- ./seed:/seed:ro
- - ./:/code
+ # DANGEROUS DUE TO DOCKERFILE PACKAGE BUILDING/INSTALLATION
+ # will need to use editable package instead somehow
+ #- ./src/pkmntrade_club:/app/lib/python3.12/site-packages/pkmntrade_club:ro
depends_on:
db:
condition: service_healthy
- redis:
- condition: service_started
celery:
build: .
- command: bash -c "cd /code && uv pip install --editable . --no-deps && celery -A pkmntrade_club.django_project worker -l INFO -B -E"
- restart: unless-stopped
- volumes:
- - ./:/code
+ command: ["celery", "-A", "pkmntrade_club.django_project", "worker", "-l", "INFO", "-B", "-E"]
+ restart: always
depends_on:
db:
condition: service_healthy
- redis:
- condition: service_started
redis:
image: redis:latest
restart: always
ports:
- 6379:6379
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 10s
- timeout: 5s
- retries: 5
db:
image: postgres:16
restart: always
@@ -48,5 +37,6 @@ services:
interval: 10s
timeout: 5s
retries: 5
+
volumes:
postgres_data:
\ No newline at end of file
diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh
index e6e194f..3e43ed2 100755
--- a/scripts/entrypoint.sh
+++ b/scripts/entrypoint.sh
@@ -8,8 +8,10 @@ fi
/deploy.sh
+# show command version before running it
+$1 --version
+
if [ "$1" == "granian" ]; then
- granian --version
echo "Appending static files path to granian command (requires granian >= 2.3.0)"
STATIC_ROOT=$(python -c 'import os; import pkmntrade_club; from django.conf import settings; print(settings.STATIC_ROOT)')
set -- "$@" --static-path-mount "$STATIC_ROOT"
diff --git a/scripts/prebuild.sh b/scripts/prebuild.sh
index c6f540b..93e436c 100755
--- a/scripts/prebuild.sh
+++ b/scripts/prebuild.sh
@@ -1,12 +1,11 @@
#!/bin/bash
-cd src/pkmntrade_club/
-
# Remove all files in staticfiles except .gitkeep
if [ -d "staticfiles" ]; then
find staticfiles -type f ! -name '.gitkeep' -delete
+ find staticfiles -type d -empty -delete
fi
# Build the tailwind theme css
-cd theme/static_src
+cd src/pkmntrade_club/theme/static_src
npm install . && npm run build
\ No newline at end of file
diff --git a/scripts/reset-db_make-migrations_seed-data.sh b/scripts/reset-db_make-migrations_seed-data.sh
index 5ee4d66..406e185 100755
--- a/scripts/reset-db_make-migrations_seed-data.sh
+++ b/scripts/reset-db_make-migrations_seed-data.sh
@@ -9,14 +9,18 @@ source .env
set +a
uv run manage.py makemigrations --noinput
-echo "Resetting dev database... "
+echo "Resetting database... "
docker compose down \
&& docker volume rm -f pkmntradeclub_postgres_data \
&& ./scripts/rebuild-and-run.sh
# Wait for the database to be ready.
-echo "Waiting 15 seconds for migrations to be auto-run..."
+echo "Waiting 15 seconds for the database to be ready, and migrations to be autorun..."
sleep 15
+
+echo "Creating cache table..."
+docker compose exec -it web bash -c "django-admin createcachetable django_cache"
+
echo "Loading seed data..."
docker compose exec -it web bash -c "django-admin loaddata /seed/0*"
diff --git a/server/docker-compose_staging.yml b/server/docker-compose_staging.yml
index 90020bc..30cf1f4 100644
--- a/server/docker-compose_staging.yml
+++ b/server/docker-compose_staging.yml
@@ -7,17 +7,16 @@ services:
web-staging:
<<: *common
environment:
- - DEBUG=False
- - DISABLE_SIGNUPS=True
- - PUBLIC_HOST=staging.pkmntrade.club
- - ALLOWED_HOSTS=staging.pkmntrade.club,127.0.0.1
+ - DEBUG=False
+ - DISABLE_SIGNUPS=True
+ - PUBLIC_HOST=staging.pkmntrade.club
labels:
- "enable_gatekeeper=true"
deploy:
mode: replicated
replicas: 2
# healthcheck:
- # test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/health"]
+ # test: ["CMD", "curl", "-f", "http://127.0.0.1:8000"]
# interval: 30s
# timeout: 10s
# retries: 3
@@ -25,8 +24,7 @@ services:
celery-staging:
<<: *common
environment:
- - DEBUG=False
- - DISABLE_SIGNUPS=True
- - PUBLIC_HOST=staging.pkmntrade.club
- - ALLOWED_HOSTS=staging.pkmntrade.club,127.0.0.1
+ - DEBUG=False
+ - DISABLE_SIGNUPS=True
+ - PUBLIC_HOST=staging.pkmntrade.club
command: ["celery", "-A", "pkmntrade_club.django_project", "worker", "-l", "INFO", "-B", "-E"]
\ No newline at end of file
diff --git a/server/docker-compose_web.yml b/server/docker-compose_web.yml
index 6d453e0..8ee6cac 100644
--- a/server/docker-compose_web.yml
+++ b/server/docker-compose_web.yml
@@ -9,18 +9,18 @@ services:
image: ghcr.io/xe/x/httpdebug
entrypoint: ["/ko-app/httpdebug", "--bind", ":8000"]
#image: badbl0cks/pkmntrade-club:stable
+ #command: ["granian", "--interface", "wsgi", "pkmntrade_club.django_project.wsgi:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--workers-kill-timeout", "180", "--access-log"]
environment:
- DEBUG=False
- DISABLE_SIGNUPS=True
- PUBLIC_HOST=pkmntrade.club
- - ALLOWED_HOSTS=pkmntrade.club,127.0.0.1
labels:
- "enable_gatekeeper=true"
deploy:
mode: replicated
replicas: 4
# healthcheck:
- # test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/health"]
+ # test: ["CMD", "curl", "-f", "http://127.0.0.1:8000"]
# interval: 30s
# timeout: 10s
# retries: 3
@@ -32,5 +32,4 @@ services:
# - DEBUG=False
# - DISABLE_SIGNUPS=True
# - PUBLIC_HOST=pkmntrade.club
- # - ALLOWED_HOSTS=pkmntrade.club,127.0.0.1
# command: ["celery", "-A", "pkmntrade_club.django_project", "worker", "-l", "INFO", "-B", "-E"]
\ No newline at end of file
diff --git a/src/pkmntrade_club/home/urls.py b/src/pkmntrade_club/home/urls.py
index 9dadbe0..c135f7a 100644
--- a/src/pkmntrade_club/home/urls.py
+++ b/src/pkmntrade_club/home/urls.py
@@ -1,6 +1,6 @@
from django.urls import path
-from .views import HomePageView
+from .views import HomePageView, HealthCheckView
urlpatterns = [
path("", HomePageView.as_view(), name="home"),
diff --git a/src/pkmntrade_club/home/views.py b/src/pkmntrade_club/home/views.py
index cc05847..cdf2449 100644
--- a/src/pkmntrade_club/home/views.py
+++ b/src/pkmntrade_club/home/views.py
@@ -139,3 +139,29 @@ class HomePageView(TemplateView):
def get(self, request, *args, **kwargs):
"""Override get method to add caching"""
return super().get(request, *args, **kwargs)
+
+class HealthCheckView(View):
+ def get(self, request, *args, **kwargs):
+
+ try:
+ from django.db import connection
+ connection.cursor().execute("SELECT 1")
+ except Exception as e:
+ return HttpResponse("Database connection failed", status=500)
+
+ try:
+ from pkmntrade_club.trades.models import TradeOffer
+ with contextlib.redirect_stdout(None):
+ print(TradeOffer.objects.count())
+ except Exception as e:
+ return HttpResponse("DB models not reachable, but db is reachable", status=500)
+
+ try:
+ from django.core.cache import cache
+ cache.set("test", "test")
+ with contextlib.redirect_stdout(None):
+ print(cache.get("test"))
+ except Exception as e:
+ return HttpResponse("Cache not reachable", status=500)
+
+ return HttpResponse("OK/HEALTHY")
diff --git a/src/pkmntrade_club/static/js/alpinejs.collapse-3.14.8.min.js b/src/pkmntrade_club/static/js/alpinejs.collapse@3.14.8.min.js
similarity index 100%
rename from src/pkmntrade_club/static/js/alpinejs.collapse-3.14.8.min.js
rename to src/pkmntrade_club/static/js/alpinejs.collapse@3.14.8.min.js
diff --git a/src/pkmntrade_club/static/js/alpinejs-3.14.8.min.js b/src/pkmntrade_club/static/js/alpinejs@3.14.8.min.js
similarity index 100%
rename from src/pkmntrade_club/static/js/alpinejs-3.14.8.min.js
rename to src/pkmntrade_club/static/js/alpinejs@3.14.8.min.js
diff --git a/src/pkmntrade_club/static/js/count-v4.js b/src/pkmntrade_club/static/js/count@v4.js
similarity index 100%
rename from src/pkmntrade_club/static/js/count-v4.js
rename to src/pkmntrade_club/static/js/count@v4.js
diff --git a/src/pkmntrade_club/static/js/floating-ui_core-1.6.9.9.min.js b/src/pkmntrade_club/static/js/floating-ui_core@1.6.9.9.min.js
similarity index 100%
rename from src/pkmntrade_club/static/js/floating-ui_core-1.6.9.9.min.js
rename to src/pkmntrade_club/static/js/floating-ui_core@1.6.9.9.min.js
diff --git a/src/pkmntrade_club/static/js/floating-ui_dom-1.6.13.13.min.js b/src/pkmntrade_club/static/js/floating-ui_dom@1.6.13.13.min.js
similarity index 100%
rename from src/pkmntrade_club/static/js/floating-ui_dom-1.6.13.13.min.js
rename to src/pkmntrade_club/static/js/floating-ui_dom@1.6.13.13.min.js
diff --git a/src/pkmntrade_club/theme/templates/base.html b/src/pkmntrade_club/theme/templates/base.html
index 7098131..9279351 100644
--- a/src/pkmntrade_club/theme/templates/base.html
+++ b/src/pkmntrade_club/theme/templates/base.html
@@ -38,8 +38,8 @@
-
-
+
+
@@ -130,13 +130,13 @@
-
+
-
+
-
-
+
+
{% block javascript %}{% endblock %}