From 185e9a0547027d9db88102fb540abc87794077dd Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sun, 23 Feb 2025 10:41:53 -0600 Subject: [PATCH 1/6] Added makemigrations command. --- docker/entrypoint.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index f91b062d..6e937765 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -109,6 +109,7 @@ service redis-server start # Run Django commands echo_with_timestamp "Running Django commands..." python manage.py collectstatic --noinput || true +python manage.py makemigrations --noinput || true python manage.py migrate --noinput || true # Start Celery From d650aa8af653dabd36362dea7de97c0dfad27485 Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sun, 23 Feb 2025 11:11:00 -0600 Subject: [PATCH 2/6] Creates default user on first startup. --- docker/entrypoint.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 6e937765..46f44b8d 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -13,6 +13,9 @@ export POSTGRES_USER=${POSTGRES_USER:-dispatch} export POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-secret} export POSTGRES_HOST=${POSTGRES_HOST:-localhost} export POSTGRES_PORT=${POSTGRES_PORT:-5432} +export DJANGO_SUPERUSER_USERNAME=${DEFAULT_USERNAME:-admin} +export DJANGO_SUPERUSER_PASSWORD=${DEFAULT_PASSWORD:-admin} +export DJANGO_SUPERUSER_EMAIL=${DEFAULT_EMAIL:-admin@dispatcharr.local} export PGDATA=${PGDATA:-/app/data/db} export PG_BINDIR="/usr/lib/postgresql/14/bin" @@ -111,6 +114,13 @@ echo_with_timestamp "Running Django commands..." python manage.py collectstatic --noinput || true python manage.py makemigrations --noinput || true python manage.py migrate --noinput || true +echo_with_timestamp "Checking if Django superuser exists..." +if ! python manage.py shell -c "from django.contrib.auth import get_user_model; exit(0) if get_user_model().objects.filter(username='${DJANGO_SUPERUSER_USERNAME}').exists() else exit(1)"; then + echo_with_timestamp "Superuser does not exist. Creating..." + python manage.py createsuperuser --noinput || true +else + echo_with_timestamp "Superuser already exists. Skipping creation." +fi # Start Celery echo_with_timestamp "Starting Celery..." From de1befcbd7fb75ddddf5cb0f0f4ce8cb1f981b43 Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sun, 23 Feb 2025 11:19:53 -0600 Subject: [PATCH 3/6] Added entire .vscode folder to ignore. --- .gitignore | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 62389ce5..eebc93dc 100755 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ .DS_Store __pycache__/ **/__pycache__/ -.vscode/launch.json -.vscode/tasks.json +**/.vscode/ *.pyc - From 808e305a1c2babc792144a0cf3c152f18d0db54a Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sun, 23 Feb 2025 15:36:07 -0600 Subject: [PATCH 4/6] entrypoint now runs as the user context specified by PUID and PGID. --- docker/entrypoint.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 46f44b8d..a928ce69 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -13,12 +13,15 @@ export POSTGRES_USER=${POSTGRES_USER:-dispatch} export POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-secret} export POSTGRES_HOST=${POSTGRES_HOST:-localhost} export POSTGRES_PORT=${POSTGRES_PORT:-5432} +export PUID=${PUID:-1000} +export PGID=${PGID:-1000} export DJANGO_SUPERUSER_USERNAME=${DEFAULT_USERNAME:-admin} export DJANGO_SUPERUSER_PASSWORD=${DEFAULT_PASSWORD:-admin} export DJANGO_SUPERUSER_EMAIL=${DEFAULT_EMAIL:-admin@dispatcharr.local} export PGDATA=${PGDATA:-/app/data/db} export PG_BINDIR="/usr/lib/postgresql/14/bin" + # Echo environment variables for debugging echo_with_timestamp "POSTGRES_DB: $POSTGRES_DB" echo_with_timestamp "POSTGRES_USER: $POSTGRES_USER" @@ -107,7 +110,7 @@ fi # Start Redis echo_with_timestamp "Starting Redis..." -service redis-server start +su - $POSTGRES_USER -c 'redis-server --daemonize yes' # Run Django commands echo_with_timestamp "Running Django commands..." @@ -124,8 +127,8 @@ fi # Start Celery echo_with_timestamp "Starting Celery..." -celery -A dispatcharr worker --loglevel=info & +su - $POSTGRES_USER -c 'cd /app && celery -A dispatcharr worker --loglevel=info &' # Start Gunicorn echo_with_timestamp "Starting Gunicorn..." -gunicorn --workers=4 --worker-class=gevent --timeout=300 --bind 0.0.0.0:9191 dispatcharr.wsgi:application \ No newline at end of file +su - $POSTGRES_USER -c 'cd /app && gunicorn --workers=4 --worker-class=gevent --timeout=300 --bind 0.0.0.0:9191 dispatcharr.wsgi:application' \ No newline at end of file From a1792fcc51de5780988eeab0e1816da62f909aae Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sun, 23 Feb 2025 15:54:18 -0600 Subject: [PATCH 5/6] Docker Compose to build AIO --- docker/docker-compose-aio.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docker/docker-compose-aio.yml diff --git a/docker/docker-compose-aio.yml b/docker/docker-compose-aio.yml new file mode 100644 index 00000000..d5d58a91 --- /dev/null +++ b/docker/docker-compose-aio.yml @@ -0,0 +1,24 @@ +services: + dispatcharr: + build: + context: .. + dockerfile: docker/DockerfileAIO + container_name: dispatcharr-dev + restart: unless-stopped + ports: + - 9191:9191 + #- 5432:5432 + environment: + - PUID=1000 + - PGID=1000 + - POSTGRES_HOST=localhost + - POSTGRES_USER=dispatch + - POSTGRES_PASSWORD=secret + - POSTGRES_PORT=5432 + - POSTGRES_DB=dispatcharr + - DJANGO_SUPERUSER_USERNAME=admin + - DJANGO_SUPERUSER_PASSWORD=adminpassword + - DJANGO_SUPERUSER_EMAIL=admin@example.com + volumes: + - ./data:/app/data + From c76fc3c292ae111b3044fe365858e8aec6fa7cbb Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sun, 23 Feb 2025 16:10:29 -0600 Subject: [PATCH 6/6] Updated default values for admin login --- docker/docker-compose-aio.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/docker-compose-aio.yml b/docker/docker-compose-aio.yml index d5d58a91..217005df 100644 --- a/docker/docker-compose-aio.yml +++ b/docker/docker-compose-aio.yml @@ -17,8 +17,8 @@ services: - POSTGRES_PORT=5432 - POSTGRES_DB=dispatcharr - DJANGO_SUPERUSER_USERNAME=admin - - DJANGO_SUPERUSER_PASSWORD=adminpassword - - DJANGO_SUPERUSER_EMAIL=admin@example.com + - DJANGO_SUPERUSER_PASSWORD=admin + - DJANGO_SUPERUSER_EMAIL=admin@dispatcharr.local volumes: - ./data:/app/data