sql >> Databasteknik >  >> RDS >> PostgreSQL

Länka Django och Postgresql med Docker

Dockerfilen för din Django-bild bör inte exponera port 5432 eftersom ingen Postgresql-server kommer att köras i någon behållare som skapats från den bilden:

FROM python:3-onbuild
EXPOSE 8000
CMD ["/bin/bash"]

Sedan när du kör Django-behållaren länkar du den till

--link my-postgres:my-postgres

dina inställningar för databasen är felaktiga.

I Django-behållaren:127.0.0.1 hänvisar till Django-behållaren som inte kör någon tjänst som lyssnar på port 5432.

Så filen settings.py bör vara:

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

När du kör din Django-behållare med:

sudo docker run --link my-postgres:db -v /home/mpmsp/project/ezdict/ezbkend:/usr/src/app -name my-app -i -t my-app

sedan din settings.py filen måste vara:

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


  1. Varför är '2'> '10'?

  2. Hur skapar man någon form av iterator (eller artificiell id) för en given uppsättning rader?

  3. För att förstå frågor i PHP PG-förberedda uttalanden

  4. Tar du den näst sista raden med bara ett urval i SQL Server?