[PYTHON] Wenn ich versuche, django und postgresql mit Docker zu verbinden, wird die Fehlermeldung "django.db.utils.OperationalError: Hostname" db "konnte nicht in Adresse übersetzt werden: Name oder Dienst nicht bekannt"

Error

Wenn Sie versuchen, eine Django-Entwicklungsumgebung mit Docker zu erstellen, während Sie sich Quickstart: Compose and Django ansehen, klicken Sie auf "Docker-Compose up" Ich habe den folgenden Fehler erhalten.

django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

setting.py

setting.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

Unmodifizierte docker-compose.yml

Docker-compose.yml


version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
  db:
    image: postgres

Geänderte docker-compose.yml

docker-compose.yml


version: '3'

services:
    web:
        build: .
        command: python3 manage.py runserver 0.0.0.0:8000
        volumes:
            - .:/code
        ports:
            - "8000:8000"
        depends_on:
            - db
    db:
        image: postgres
        ports: 
            - "5432"
        environment:
          - POSTGRES_DB=postgres
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres

Der Fehler ist jetzt weg. Um Postgres in Docker verwenden zu können, müssen Sie Informationen wie Datenbankbenutzer, Kennwort und Datenbankname konfigurieren. Dies kann durch Setzen der Umgebungsvariablen des Containers in der `Umgebung``` in der modifizierten` dokcer-compose.yml``` erfolgen.

Recommended Posts

Wenn ich versuche, django und postgresql mit Docker zu verbinden, wird die Fehlermeldung "django.db.utils.OperationalError: Hostname" db "konnte nicht in Adresse übersetzt werden: Name oder Dienst nicht bekannt"
Wenn ich versuche, mysqlclient mit Django zu installieren, wird die Fehlermeldung angezeigt: Befehl 'gcc' ist mit dem Exit-Status 1 fehlgeschlagen.
Wenn ich versuche, mit mysql-connector-python eine Verbindung zu MySQL herzustellen, kann ich keine Verbindung mit dem Fehler "SSL-Verbindungsfehler: SSL_CTX_set_tmp_dh fehlgeschlagen" herstellen.
Wenn ich versuche, die Daten in DynamoDB mit Python (boto3) zu aktualisieren, wird "ExpressionAttributeNames enthält ungültigen Schlüssel: Syntaxfehler; Schlüssel: <Schlüsselname>" angezeigt.
Wenn ich versuche, Pandas unter macOS zu importieren, wird die Fehlermeldung Kein Modul mit dem Namen'_bz2 'angezeigt.
Ich erhalte [Fehler 2055], wenn ich versuche, mit Heroku eine Verbindung zu MySQL herzustellen
Überprüfen Sie, ob der Docker-Container keine Verbindung zum Internet herstellt
Rufen Sie den Hostnamen des Host-PCs mit Docker unter Linux ab
Wenn ich versuche, den Befehl pip nach dem Aktualisieren von pip auszuführen, wird "Keine solche Datei oder kein solches Verzeichnis" angezeigt.
Wenn ich versuche, den Befehl make von Makefile mit os / exec von golang auszuführen, führen die zweite und nachfolgende Ausführung zu einem Fehler.
Beim Versuch, maec 4.0.1.0 mit pip zu installieren, wird eine Fehlermeldung angezeigt