无法从golang连接到Docker Postgres容器可能是由于以下原因导致的:
以下是一个可能的解决方案示例:
docker network create mynetwork
然后将Postgres容器和Golang应用程序连接到该网络:
docker run --network=mynetwork --name postgres-container -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker run --network=mynetwork golang-app
docker inspect postgres-container
确保Golang应用程序中使用的连接字符串中的主机和端口与容器的配置相匹配。
docker port postgres-container
确保端口映射配置正确,并且Golang应用程序中使用的端口与容器的配置相匹配。
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
connStr := "user=postgres password=mysecretpassword dbname=mydb host=postgres-container port=5432 sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected to Postgres!")
}
确保连接字符串中的用户名、密码、数据库名、主机和端口与Postgres容器的配置相匹配。
请注意,以上示例仅供参考,具体的解决方案可能因环境和配置而异。如果问题仍然存在,请提供更多详细信息以便进一步排查。
领取专属 10元无门槛券
手把手带您无忧上云