時間がない人向けのGolangを使ったGrpcサーバをクリーンアーキテクチャで実装をする

2024/09/22に公開

目的

  • golangでGrpcサーバを作りたいけど、忙しくて時間がない人に向けです

コード

https://github.com/nagisa599/golang-grpc-template

利用技術

  • golang
  • gorm
  • goose
  • gRPC
  • Buf
  • mySql
  • docker
  • air

手順

githubからcloneを作成する

git clone https://github.com/nagisa599/golang-grpc-template

module名を変更する

この部分を適時、自分のプロジェクトのパスに変更する。vscodeの一括変換を使うと便利。

github.com/nagisa599/golang-grpc-template

envファイルを記述

.env.exampleをcopyして.envファイルに変更する。

DB_USER=root
DB_PASSWORD=
DB_HOST=host.docker.internal
DB_PORT=3306
DB_NAME=mysql_template
ENV=development
PORT=3001

imageを作成

make bl-local

コンテナの立ち上げ

make up-local

確認

この画面がコンソールに確認されたら成功になります。

onnections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
mysql-db        | 2024-09-21T15:05:00.622386Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.39'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
grahql-backend  | running...
grahql-backend  | 2024-09-22T00:05:04.670+0900  INFO    zap/grpclogger.go:47    [core][Server #1]Server created   {"system": "grpc", "grpc_log": true}
grahql-backend  | 2024-09-22T00:05:04.671+0900  INFO    zap/grpclogger.go:47    [core][Server #1 ListenSocket #2]ListenSocket created     {"system": "grpc", "grpc_log": true}

発展

dbのmigrationを作成

参考

まとめ

log表示、migration、ディレクトリー構成など、プロダクトレベルのリポジトリーになっているの、ぜひ動かして勉強してみてください

Discussion