Django-Q Docker environment-Variablen SECRET_KEY, ALLOWED_HOSTS

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 374
Registriert: Mittwoch 8. August 2018, 16:42

Sonntag 16. Mai 2021, 07:22

Hi,

mein Django-Q Container will nicht so richtig laufen.

Er meckert mit den os.environ herum. Ich habe in einer

.env.dev , die im selben Ordner wie das Dockerfile und docker-compose liegt.

Code: Alles auswählen

DEBUG=1
SECRET_KEY='foo123'
DJANGO_ALLOWED_HOSTS=localhost 0.0.0.0 127.0.0.1

SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=postgres_django_dev
SQL_USER=user
SQL_PASSWORD=+++
SQL_HOST=db
SQL_PORT=5432
welche ich im docker-compose.yml einlese:

Code: Alles auswählen

version: "3.7"
services:
    app:
        build: .
        volumes:
            - ./:/django-app
        ports:
            - 8000:8000
        image: app:djangoname
        env_file:
            - .env.dev
        container_name: django_app_container
        command: python manage.py runserver 0.0.0.0:8000
        depends_on:
            - db
    djangoq:
        build: .
        volumes:
            - ./:/django-app
        ports:
            - "8002:8002"
        command: python manage.py qcluster
        depends_on:
            - app    
    db:
        image: postgres:12.0-alpine
        volumes:
            - ./data/db:/var/lib/postgresql/data
        environment:
            - POSTGRES_USER=user
            - POSTGRES_PASSWORD=+++
            - POSTGRES_DB=postgres_django_dev
        container_name: postgres_db_container    

volumes:
    postgres_data:    


In meiner settings.py

Code: Alles auswählen

SECRET_KEY = os.environ.get("SECRET_KEY")
ALLOWED_HOSTS =os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
Er meckert:
djangoq_1 | raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
djangoq_1 | django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.


djangoq_1 | ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
djangoq_1 | AttributeError: 'NoneType' object has no attribute 'split'



Wenn ich jetzt aber in meiner settings.py den key und die hosts hardcode, dann funktioniert alles:

Code: Alles auswählen

SECRET_KEY = '234ijofdidfg'
ALLOWED_HOSTS =['0.0.0.0']
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
sparrow
User
Beiträge: 2739
Registriert: Freitag 17. April 2009, 10:28

Sonntag 16. Mai 2021, 08:24

Hier .get zu verwenden macht keinen Sinn. Dein Programm kann nicht damit umgehen, wenn die gesetzten Variablen None als Wert bekommen.
Ruf also die Wert aus den environ-dict mittels os.environ[key] ab.
naheliegend
User
Beiträge: 374
Registriert: Mittwoch 8. August 2018, 16:42

Sonntag 16. Mai 2021, 12:50

sparrow hat geschrieben:
Sonntag 16. Mai 2021, 08:24
Hier .get zu verwenden macht keinen Sinn. Dein Programm kann nicht damit umgehen, wenn die gesetzten Variablen None als Wert bekommen.
Ruf also die Wert aus den environ-dict mittels os.environ[key] ab.
Okey, ergibt sind. Aber warum bekommen die denn None, obwohl ich sie im .env.dev Textfile mit Werten versehen habe?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
naheliegend
User
Beiträge: 374
Registriert: Mittwoch 8. August 2018, 16:42

Sonntag 16. Mai 2021, 13:42

Das mit dem os.environ[key] ändert nichts an der Fehlermeldung.

Wenn ich aus der settings.py heraus die Werte printe, dann sind das auch die, die ich im txt-file angebe.

Code: Alles auswählen

SECRET_KEY = os.environ['SECRET_KEY']
print(os.environ['SECRET_KEY'])

>> foo123
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Antworten