我是相对的菜鸟。我正在使用的系统上的许多活动部件,因此请对我缺乏理解,请原谅。我在这里的问题更多是关于寻求调试策略,而不是寻求解决问题的方法,因为我目前正在空白。
我正在EC2实例上运行Docker容器。所有实例都在我公司的VPC中运行。我需要连接到内部部署在工作站上的Postgres数据库。 Docker容器使用Dokku(一种开源的Heroku替代产品)自动启动和关闭,我终于弄清楚了如何在EC2上进行设置。
我将在帖子中使用一些变量:
DBSERVER
:托管我们的数据库的工作站的地址。DOKKUSERVER
:Dokku EC2实例的地址。APPCONTAINER
:由Dokku推出的Docker容器,用于存放我的应用。APPNAME
:Dokku上的应用程序名称当我用APPCONTAINER
进入dokku enter APPNAME
时,我可以ping DBSERVER
并返回响应:
(environment_name) [root@APPCONTAINER project]# ping DBSERVER
PING DBSERVER (DB_SERVER_IP) 56(84) bytes of data.
64 bytes from DBSERVER (DB_SERVER_IP): icmp_seq=1 ttl=117 time=95.9 ms
64 bytes from DBSERVER (DB_SERVER_IP): icmp_seq=2 ttl=117 time=96.2 ms
64 bytes from DBSERVER (DB_SERVER_IP): icmp_seq=3 ttl=117 time=95.7 ms
但是,当我尝试使用pgcli
连接时,发现无法连接:
(environment_name) [root@APPCONTAINER project]# pgcli -h $DB_SERVER -p $DB_PORT -U $DB_USER -d $DB_NAME
could not send SSL negotiation packet: Resource temporarily unavailable
另外,在我的Python应用程序中,我们同时使用了psycopg2
和sqlalchemy
(在代码库的不同部分),我发现我们无法连接到数据库。另一方面,与我的本地计算机(即我的笔记本电脑或其他本地工作站)的连接可以正常工作。
我的主要问题是Python应用程序需要通过psycopg2
和sqlalchemy
到数据库的连接,但这不起作用。
总而言之,我在这里就如何调试没有什么用,所以我在寻求调试策略(即我应该看什么),并希望有一些指向如何调试文档的指针。 (确切的命令-如果指向文档页面,我很乐意查找它们。)我已经想到但不确定如何看待的事情是:
我已经完成的事情是:
还有其他我可能错过的调试策略吗?我希望对他们有所启发!