如何使用Django将postgresql连接到aws RDS

2024-10-06 12:34:53 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Django时,我无法将postgreSQL数据库连接到AWS RDS

我不确定我做错了什么,但我有以下配置:

Django
docker-compose
postgres

enter image description here

#DJANGO设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': "dbtest",
        'USER': "mastername",
        'PASSWORD': "somepassword",
        'HOST': 'dbtest.zmrHnee2mhLunL.us-east-2.rds.amazonaws.com',
        'PORT': 5432
    }
}

docker compose

version: "3.7"

services:
  backend:
    build: ./backend
    container_name: backend
    stdin_open: true
    tty: true
    restart: "on-failure"
    env_file:
      .env
    volumes:
      - ./backend:/backend
      - ./backend/static:/backend/static
    ports:
      - 8000:8000
    depends_on:
      - db
    links:
      - db:db
    networks:
      - db_network

  db:
    image: postgres:11.5-alpine
    container_name: db
    restart: always
    environment:
      - POSTGRES_DB=dbtest
      - POSTGRES_USER=mastername
      - POSTGRES_PASSWORD=somepassword
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    ports:
      - 5432:5432
    networks:
      - db_network

networks:
  db_network:
    driver: bridge

volumes:
  postgres_data:

启动容器后docker-compose up -d --build

现在当我检查docker-compose logs

我看到了下面的回溯:

File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect
backend     |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
backend     | django.db.utils.OperationalError: could not translate host name "dbtest.zmrHnee2mhLunL.us-east-2.rds.amazonaws.com" to address: Name or service not known

在创建另一个db实例并允许其公开访问之后

 File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect
backend     |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
backend     | django.db.utils.OperationalError: FATAL:  database "dbtest" does not exist

安全组

enter image description here

我已经试着调试了几个小时,任何帮助都会非常有用


Tags: djangocomposedockernamebackenddbfactoryconnect