最近 GORM を使った開発をしていて Docker の PostgreSQL への接続に躓いたので、接続方法をまとめました。
GORM のバージョンは v2以降です。
Dockerfile
docker-compose.yml
version: '3'
services:
server:
...
...
db:
...
ports:
- "5332:5432"
...
...
データベースのサービス名は db にしてます。
接続
docker のデータベースに gorm で接続する際は、host と port に気を付ける必要があります。
host は Docker のサービス名にする必要があります。
dsn := "host=db user=gorm password=gorm dbname=gorm port=5432 sslmode=disable TimeZone=Asia/Tokyo"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
fmt.Println("DB error(Init): ", err)
}
これで接続出来ます。
まとめ
gorm を使い Docker のデータベースに接続する際は、host に気を付けてください。
私は、これに気付くのに結構な時間を使ってしまいました。
ご指摘があればよろしくお願いします。