LoginSignup
3

More than 1 year has passed since last update.

HerokuにデプロイしたGoアプリでpostgresに接続する時のgormの設定方法

Last updated at Posted at 2021-03-29

はじめに

最近とうらぶ練度チェッカーというwebアプリを開発し、その際にサーバサイドをgoで書いてHerokuにデプロイしたのですが、postgresに接続する時のgormの設定についての情報がなかなか見つからなくて苦労したのでここに書き残しておこうと思います。

設定について

公式のHeroku スターターガイド (Go)はすごく丁寧に書いてあります。DB接続についての説明はここら辺にあります。しかし今回はgorm使いたいのでここに記載している方法とは別の方法で接続する必要があります。そこでgormの公式ドキュメントを観に行ってみましょう。これです。 heroku addons:create heroku-postgresql:hobby-devコマンドを打つとデータベースが作成されるので、既存のDB接続というところを参考に設定をします。公式に書いてあるのをそのまま書くと次のようになります。

sqlDB, err := sql.Open("postgres", "mydb_dsn")
gormDB, err := gorm.Open(postgres.New(postgres.Config{
  Conn: sqlDB,
}), &gorm.Config{})

はい。
sql.Openの第二引数のmydb_dsnをまだ設定していないので次はそこです。
HerokuでDBのセットアップをする時、ここにあるように、自動的に DATABASE_URL という環境変数が設定されます。これをGetenvした後parseURLして、SSLの設定も追加してさっきのmydb_dsnの部分に入れましょう。
書いてみます。

    mydb_dsn := os.Getenv("DATABASE_URL")
    connection,err := pq.ParseURL(url)
    connection += " sslmode=require"
    sqlDB,err := sql.Open("postgres", connection)
    gormDB, err := gorm.Open(postgres.New(postgres.Config{
      Conn: sqlDB,
     }), &gorm.Config{})

こんな感じでherokuでgormを使ったDBの接続の設定は完了です!!

※gorm.Configの中身やエラーハンドリングは本筋に関係ないので省略しています。

終わりに

最後までお読みいただきありがとうございました!
何か間違いがあったらコメントでご指摘いただければと思います。
この記事が誰かの役に立てたら幸いです!

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3