diff --git a/Dockerfile b/Dockerfile index 19a42f83e..ffa8f85e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # pull official base image -FROM python:3.12-slim-bookworm +FROM python:3.12-slim-bookworm AS djangoproject-www-base # set work directory WORKDIR /usr/src/app @@ -33,13 +33,10 @@ RUN apt-get update \ libc6-dev \ libpq-dev \ zlib1g-dev \ - && python3 -m pip install --no-cache-dir -r ${REQ_FILE} \ - && apt-get purge --assume-yes --auto-remove \ - gcc \ - libc6-dev \ - libpq-dev \ - zlib1g-dev \ - && rm -rf /var/lib/apt/lists/* + && python3 -m pip install --no-cache-dir -r ${REQ_FILE} + + +FROM djangoproject-www-base AS djangoproject-www-dev # install node dependencies COPY ./package.json ./package.json @@ -48,5 +45,15 @@ RUN npm install # copy project COPY . . + +FROM djangoproject-www-dev AS djangoproject-www-prod + +RUN apt-get purge --assume-yes --auto-remove \ + gcc \ + libc6-dev \ + libpq-dev \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* + # ENTRYPOINT is specified only in the local docker-compose.yml to avoid # accidentally running it in deployed environments. diff --git a/djangoproject/settings/docker.py b/djangoproject/settings/docker.py index d97f054e7..dc9035fa2 100644 --- a/djangoproject/settings/docker.py +++ b/djangoproject/settings/docker.py @@ -1,76 +1,8 @@ -from .common import * # noqa - -DATABASES = { - "default": { - "ENGINE": os.environ.get("SQL_ENGINE"), - "NAME": os.environ.get("SQL_DATABASE"), - "USER": os.environ.get("SQL_USER"), - "PASSWORD": os.environ.get("SQL_PASSWORD"), - "HOST": os.environ.get("SQL_HOST"), - "PORT": os.environ.get("SQL_PORT"), - } -} - -SECRET_KEY = os.environ.get("SECRET_KEY") - -SILENCED_SYSTEM_CHECKS = SILENCED_SYSTEM_CHECKS + [ - "django_recaptcha.recaptcha_test_key_error" # Default test keys for development. -] - -ALLOWED_HOSTS = [".localhost", "127.0.0.1", "www.127.0.0.1"] - -LOCALE_MIDDLEWARE_EXCLUDED_HOSTS = ["docs.djangoproject.localhost"] - -DEBUG = True -THUMBNAIL_DEBUG = DEBUG - -CACHES = { - "default": { - "BACKEND": "django.core.cache.backends.locmem.LocMemCache", - "LOCATION": "trololololol", - }, - "docs-pages": { - "BACKEND": "django.core.cache.backends.locmem.LocMemCache", - "LOCATION": "docs-pages", - }, -} - -CSRF_COOKIE_SECURE = False - -EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" - -MEDIA_ROOT = str(DATA_DIR.joinpath("media_root")) - -SESSION_COOKIE_SECURE = False - -STATIC_ROOT = str(DATA_DIR.joinpath("static_root")) - -# Docs settings -DOCS_BUILD_ROOT = DATA_DIR.joinpath("djangodocs") +from .dev import * # noqa # django-hosts settings +if parent_host := SECRETS.get("parent_host"): + PARENT_HOST = parent_host -PARENT_HOST = "localhost:8000" - -# django-push settings - -PUSH_SSL_CALLBACK = False - -# Enable optional components - -if DEBUG: - try: - import debug_toolbar # NOQA - except ImportError: - pass - else: - INSTALLED_APPS.append("debug_toolbar") - INTERNAL_IPS = ["127.0.0.1"] - MIDDLEWARE.insert( - MIDDLEWARE.index("django.middleware.common.CommonMiddleware") + 1, - "debug_toolbar.middleware.DebugToolbarMiddleware", - ) - MIDDLEWARE.insert( - MIDDLEWARE.index("debug_toolbar.middleware.DebugToolbarMiddleware") + 1, - "djangoproject.middleware.CORSMiddleware", - ) +# debug-toolbar settings +INTERNAL_IPS = SECRETS.get("internal_ips", ["127.0.0.1"]) diff --git a/docker-compose.yml b/docker-compose.yml index 8f875e2b5..291bf7a7f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,7 @@ services: build: context: ./ dockerfile: Dockerfile + target: djangoproject-www-dev args: - REQ_FILE=requirements/tests.txt entrypoint: ./docker-entrypoint.dev.sh @@ -29,3 +30,11 @@ services: - POSTGRES_USER=djangoproject - POSTGRES_PASSWORD=secret - POSTGRES_DB=djangoproject + tracdb: + image: postgres:14-alpine + environment: + - POSTGRES_USER=code.djangoproject + - POSTGRES_PASSWORD=secret + - POSTGRES_DB=code.djangoproject + volumes: + - ./tracdb/trac.sql:/docker-entrypoint-initdb.d/trac.sql diff --git a/tox.ini b/tox.ini index d8f31f0b9..03b498806 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,7 @@ python = [testenv] allowlist_externals = make -passenv = DJANGO_SETTINGS_MODULE +passenv = DJANGO_SETTINGS_MODULE, DJANGOPROJECT_DATA_DIR deps = tests: -r{toxinidir}/requirements/tests.txt flake8: flake8