JavaScriptとGo言語でToDoリストアプリを作ろう!~Docker化とDB切り替え

こんにちは。KOUKIです。

TodoリストアプリケーションをJavaScriptとGo言語で実装しています。

今回は、TodoリストのDocker化とDB切り替え処理の実装を行います。

前回

ファイル作成

作業に必要なファイルを作成してください。

Docker化

Dockerを使えるようになると、アプリケーション開発の実行環境を簡単に構築できるようになるので、普段使いすることをお勧めします。

Dockerfile

Dockerfileを作成しましょう。

docker-compose.yml

docker-compose.ymlでは、以下のサービスを定義します。

  • apiサービス(golang)
  • uiサービス(html/css/javascript)
  • mysqlサービス(DBをMySQLへ)
  • phpmyadminサービス(DBの視覚化する)

動作確認

次のコマンドで、コンテナを立ち上げてください。

コンテナが立ち上がったら、「http://localhost:8080」にアクセスしてください。

OKですね。これで、Docker化が完了です!

MySQLの管理画面にアクセスしたい場合は、「http://localhost:8888」にアクセスしてください。

DB切り替え

以前からGoのInterfaceを使うとDBの切り替えが楽になるとお伝えしてきました。しかし、実際に切り替えたことがありませんでしたw

そこで、MySQLとsync.Mapの切り替えを行ってみたいと思います。

GORM

今回は、MySQLへのアクセスを簡単にするために、GORMを使います。これを使うとSQL文を書く代わりに、GoのコードでMySQLにアクセスできるようになります。

ドメイン

Todoにgormのプライマリキーをつけておきます。

レポジトリー

レポジトリーには、MySQLへのアクセスメソッドを定義します。

GORMを使うと、簡単にMySQLにアクセスできることがわかると思います。

フレームワーク&ドライバー(DB切り替え)

main.goに次の処理を追加します。

  • 環境変数からMySQL接続に必要な情報を取得
  • DBのスキーマーを作成(マイグレーション)
  • MySQL接続
  • MySQLレポジトリーをインスタンス化

ここでのポイントは、もちろんDBの切り替えです。
「tr := repository.NewSyncMapTodoRepository()」の呼び出しの代わりに「tr := repository.NewTodoRepositoryMySQL(db)」を呼び出すことで、DBを切り替えています。

大変便利ですね。

1点だけ注意点があります。現状の作りだと日本語文字を保存できません^^;
多分、MySQLの設定が足りないのでしょう。

おわりに

Todoリストの作成、クリーンアーキテクチャ設計、DB切り替え、Docker化と色々とやりましたね^^

Todoアプリケーション開発は本記事で終了としますが、アイデア次第で色々な機能を追加できると思うので、ぜひ挑戦してみてください。

それでは、また!

関連記事

こちらの記事も人気です!

JavaScriptまとめ

Go言語まとめ

おすすめ書籍


コメントを残す