[golang]Dockerでfiber API環境を構築しよう2! ~MySQL導入~

こんにちは、KOUKIです。

前回、Go言語のフレームワークであるfiberDocker環境上で動かす方法を記事にしました。

今回は、MySQLを導入してみたいと思います。

尚、この記事に出てくるソースコードは、Udemyの「React, NextJS and Golang: A Rapid Guide – Advanced」コースを参考にしています。解釈は私が勝手に付けているので、本物をみたい場合は受講をお勧めします!

前回

事前準備

MySQLへ接続するために、Go言語のGORMを使います。そのためのモジュールをインストールしておきましょう。

また、以下のフォルダ/ファイルも作成してください。

MySQLの導入

早速、MySQLを導入しましょう。

docker-compose.yml

前回作成したdocker-compose.ymlにdbサービスを追加します。

environmentには、DBの情報を記述しています。dbサービスを起動するとambassadorデータベース、adminユーザー、adminユーザーのパスワード、rootユーザーのパスワードが自動生成されます。

また、DBの情報は、ローカルのカレントフォルダ(.dbdata)上で共有しました。volumesを使うとファイルシステムを簡単にマウントすることができます。※.dbdataフォルダはDockerコンテナ立ち上げ時に自動で作成されます

DB接続

Go言語からMySQLへアクセスしてみましょう。こちらを参考にしました。

gormのOpenメソッドを使えば、簡単にMySQL(dbサービス)へアクセスできます。

起動確認

起動してみましょう。

1度目の起動時は、接続に失敗すると思います。初回起動時のみ、MySQLはDB等を作成するので起動が遅いのです。

しかし、2回目以降は問題なく接続できます。

接続に失敗した場合、backendサービスは停止するので、ブラウザから「http://localhost:8000」へアクセスしても何も表示されません。逆に表示された場合は、問題なく動作しているということになります。

VS Codeのプラグイン

蛇足ですが、VS CodeのMYSQLプラグインを入れてみました。

  • Host -> localhost
  • Port -> 33066(dbサービスに設定したport)
  • Username -> admin(dbサービスのMYSQL_USER)
  • Password -> admin(dbサービスに設定したMYSQL_PASSWORD)
  • Databases -> ambassador

上記の接続情報を入力して「Connect」ボタンを押下します。もちろん、dbサービスが動いている前提です。

ConnectができるとVsCodeからDBのスキーマーやデータなどが確認できるようになるので、大変便利です。まだテーブルを作成していないので大した情報は見れませんが、以降の記事でたびたび紹介します。

マイグレーション

gormには、Goの構造体からDBのスキーマーを自動生成するマイグレーション機能があります。

docker コンテナを立ち上げるだけで、マイグレーションが実行されるようにします。

models/user.go

このファイルには、データベースのスキーマーの元となるユーザー構造体を記述します。

database/db.go

ここには、DBへコネクションを貼ったり、マイグレーションを実行する関数を実装します。

main.go

main.goからConnect関数及びAutoMigrate関数を呼び出しましょう。

起動確認

docker コンテナを立ち上げ直すとマイグレーションが実行されるはずです。

MySQLツールで、スキーマーが作成されたか確認してみましょう。

OKですね。

次回

次回は、Live Reloading機能を実装しましょう。

Go言語まとめ

コメントを残す