go Scratch容器和PG容器之间的SSL连接问题。怎么解决?

时间:2018-12-12 13:39:11

标签: postgresql docker go docker-compose go-gorm

更新

我相信我已通过此连接解决了此问题...

from pyspark.context import SparkContext
from awsglue.context import GlueContext, DynamicFrame

# Get the right stuff
glueContext = GlueContext(SparkContext.getOrCreate())

data = glueContext.create_dynamic_frame.from_catalog(database = "my_database", table_name = "my_table")

print('Fields: ', len(data.schema().fields))
data.printSchema()

我在Docker PG容器和GoLang Scratch容器之间的连接被拒绝。错误是:

Promise

The docker-compose.yml file

The main.go file which is panicking

Complete code base with Docker files

其他说明:

  • 我正在使用GORM库与PG连接。

请求: 请查看代码,并提供一些提示,以了解在何处以及如何解决此SSL问题。

1 个答案:

答案 0 :(得分:2)

您可以按照代码查找有关如何使用Postgres调用的文档。

  • github.com/jinzhu/gorm调用
  • 调用的数据库/ sql
  • lib / pq

和lib / pq documents it's usage包括:

  
      
  • dbname-要连接的数据库的名称
  •   
  • 用户-以身份登录的用户
  •   
  • 密码-用户的密码
  •   
  • host-要连接的主机。以/开头的值用于Unix域套接字。 (默认为localhost)
  •   
  • port-绑定到的端口。 (默认值为5432)
  •   
  • sslmode-是否使用SSL(需要默认设置,这不是libpq的默认设置)
  •   
  • fallback_application_name-如果未提供应用程序名称,则会退回到该名称。
  •   
  • connect_timeout-最大等待连接时间,以秒为单位。零或未指定意味着无限期等待。
  •   
  • sslcert-证书文件位置。该文件必须包含PEM编码的数据。
  •   
  • sslkey-密钥文件位置。该文件必须包含PEM编码的数据。
  •   
  • sslrootcert-根证书文件的位置。该文件必须包含PEM编码的数据。
  •   

并且:

  
      
  • 禁用-没有SSL
  •   
  • 要求-始终为SSL(跳过验证)
  •   
  • verify-ca-始终为SSL(验证服务器提供的证书是否由受信任的CA签名)
  •   
  • 完全验证-始终为SSL(验证服务器提供的证书是否由受信任的CA和服务器主机名签署
      匹配证书中的一个)
  •   

因此,没有SSL的数据库的连接字符串很简单:

db, err := gorm.Open("postgres", "host='postgres' port=5432 user=docker dbname='docker' password='password' sslmode=disable")

或者您可以使用SSL密钥配置Postgres。这不是那么简单,但是要实现,您需要修改postgresql.conf文件以启用ssl设置并将TLS密钥对作为卷安装,或者最好将其作为群模式安装。有关如何执行此操作的众多示例之一,请访问:https://gist.github.com/likwid/86193ef581c530ea55d3