从Docker容器内部连接到RDS PostgreSQL数据库时出错

我有一个在Docker容器中运行Flask_sqlalchemy的应用程序。

容器运行不正常,所以我潜入并尝试运行该应用程序,并得到以下错误:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused Is the server running on host "DBNAME.XXXXXXXXXX.eu-west-1.rds.amazonaws.com" (000.000.000.000) and accepting TCP/IP connections on port 5432? 

应用程序在容器外工作正常,我无法弄清楚发生了什么事情。

这可能与AWS-RDS安全组有关吗? 他们目前被configuration为只接受来自我们办公室的入站连接。

编辑:

这是我的Dockerfile:

 FROM ubuntu:latest RUN apt-get update -y RUN apt-get install -y python-pip python-dev build-essential libpq-dev python-shapely COPY . /src WORKDIR /src RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "application.py"] 

这是我正在做的Docker Run命令:

docker run -d -p 5000:5000 container_name

谢谢

我有完全相同的问题;)但通过确保以下内容来解决:

  • AWS ELB环境configuration是通用Docker(未针对Python预configuration)。
  • 环境是在包含RDS实例的VPC内部创build的。
  • RDS实例正在从VPC安全组侦听正确的端口(PostgreSQL:5432)(应该已经是这种情况了)。