fix docker-django/cron problem

This commit is contained in:
2025-08-10 18:15:28 +02:00
parent fb0c7da252
commit 877a7be4aa
3 changed files with 14 additions and 24 deletions

View File

@@ -21,7 +21,7 @@ COPY . /app
# Optional non-root user (not used as default to allow cron) # Optional non-root user (not used as default to allow cron)
RUN useradd -ms /bin/bash app && chown -R app:app /app RUN useradd -ms /bin/bash app && chown -R app:app /app
# USER app # keep running as root to manage cron # USER app
# Runtime env defaults # Runtime env defaults
ENV DJANGO_DEBUG=true \ ENV DJANGO_DEBUG=true \

View File

@@ -1,8 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
# Wait for potential dependencies (none for sqlite)
# Apply migrations # Apply migrations
python manage.py migrate --noinput python manage.py migrate --noinput
@@ -20,19 +18,11 @@ username = os.environ['ADMIN_USERNAME']
password = os.environ['ADMIN_PASSWORD'] password = os.environ['ADMIN_PASSWORD']
email = os.environ.get('ADMIN_EMAIL') or f"{username}@local" email = os.environ.get('ADMIN_EMAIL') or f"{username}@local"
user, created = User.objects.get_or_create(username=username, defaults={'email': email}) user, created = User.objects.get_or_create(username=username, defaults={'email': email})
if created: user.set_password(password)
user.set_password(password) user.is_superuser = True
user.is_superuser = True user.is_staff = True
user.is_staff = True user.is_admin = True
user.is_admin = True user.save()
user.save()
else:
# update password if user exists
user.set_password(password)
user.is_superuser = True
user.is_staff = True
user.is_admin = True
user.save()
print("Admin ready") print("Admin ready")
PY PY
fi fi
@@ -75,14 +65,14 @@ s.save()
print("AppSettings seeded from environment (if provided)") print("AppSettings seeded from environment (if provided)")
PY PY
# Start cron for periodic job if schedule is set # Setup cron if schedule provided
if [[ -n "${CRON_SCHEDULE:-}" ]]; then if [[ -n "${CRON_SCHEDULE:-}" ]]; then
echo "Setting cron schedule: ${CRON_SCHEDULE}" echo "Configuring cron: ${CRON_SCHEDULE}"
# write cronjob to user crontab echo "${CRON_SCHEDULE} cd /app && /usr/local/bin/python manage.py check_new_media >> /app/cron.log 2>&1" > /etc/cron.d/subscribarr
CRONLINE="${CRON_SCHEDULE} cd /app && /usr/local/bin/python manage.py check_new_media >> /app/cron.log 2>&1" chmod 0644 /etc/cron.d/subscribarr
(crontab -l 2>/dev/null; echo "$CRONLINE") | crontab - crontab /etc/cron.d/subscribarr
crond /usr/sbin/cron
fi fi
# Start server # Run server
exec python manage.py runserver 0.0.0.0:8000 exec python manage.py runserver 0.0.0.0:8000

View File

@@ -120,7 +120,7 @@ USE_TZ = True
# Static files (CSS, JavaScript, Images) # Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.2/howto/static-files/ # https://docs.djangoproject.com/en/5.2/howto/static-files/
STATIC_URL = 'static/' STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static'] STATICFILES_DIRS = [BASE_DIR / 'static']
# STATIC_ROOT could be set for collectstatic in production # STATIC_ROOT could be set for collectstatic in production
# STATIC_ROOT = BASE_DIR / 'staticfiles' # STATIC_ROOT = BASE_DIR / 'staticfiles'