GORMを使ったDockerのPostgreSQLへの接続方法


最近 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 に気を付けてください。
私は、これに気付くのに結構な時間を使ってしまいました。

ご指摘があればよろしくお願いします。