从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)(应该已经是这种情况了)。