【问题标题】:Django server running on a GCE instance cannot connect to postgres cloud SQL在 GCE 实例上运行的 Django 服务器无法连接到 postgres 云 SQL
【发布时间】:2022-10-12 22:08:12
【问题描述】:

我有一个docker-compose,它有一个django 和一个nginx 作为反向代理

码头工人-compose.yml:

version: "3"
services:

  app:
    restart: always
    command: ./startup.sh
    image: region-docker.pkg.dev/project_id/repo/image:tag
    container_name: backend
    expose:
      - "8000"
    volumes:
      - static_volume:/code/static
    hostname: app

  nginx:
    restart: always
    image: region-docker.pkg.dev/project_id/repo/image:tag
    volumes:
      - static_volume:/code/static
    ports:
      - "80:80" 
    depends_on:
      - app

volumes:
  static_volume:

settings.py中的数据库连接变量配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'Instance': 'project_id:region:instance_name',
        'NAME': 'database_name', 
        'USER': 'username', 
        'PASSWORD': 'password',
        'HOST': 'database_internal_IP', 
        'PORT': '5432',
    }
}

每当我在虚拟机 CLI 中运行 docker-compose up 时,nginx 运行完美,但 django 服务器出现此错误

django.db.utils.OperationalError: could not connect to server: Connection timed out
backend  |      Is the server running on host "instance-private-IP" and accepting
backend  |      TCP/IP connections on port 5432?

笔记:当我运行psql -h instance-private-IP -U username 时,连接已成功建立

笔记:当我在本地 pc 上运行完全相同的容器时,使用相同的配置,只有公共 IP 而不是私有 IP,容器运行得很好

笔记:附加到 VM 的服务帐户可以访问已启用的云 SQL

【问题讨论】:

    标签: django postgresql docker google-cloud-platform docker-compose


    【解决方案1】:

    在多次尝试重新配置所有内容(docker-compose、Django、VM 配置)之后

    没有任何效果。可疑的是,对我有用的是重新启动 VM 实例。

    我希望这可以节省任何人的时间。

    【讨论】:

      猜你喜欢
      • 2020-05-28
      • 2015-06-20
      • 2021-08-31
      • 2019-06-02
      • 2020-01-27
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多