2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

はじめに

最近とうらぶ練度チェッカーという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の中身やエラーハンドリングは本筋に関係ないので省略しています。

終わりに

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

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?