VscodeでrustのDev Containerを作り、Tonicを使ったgrpcサーバとクライアントを作り、接続テストをしてみる。接続の結果、お馴染みのHello worldが表示される。
前提条件
- Vscodeがインストールされている
- dockerがインストールされている
- rustのチュートリアル程度の知識はある
DevContainerをつくる
- まず、基本のworkspaceとなるフォルダを作り、`.devcontainer`フォルダを作成する。
- その中にdevcontainer.jsonとdocker-compose.ymlを作る
[devcontainer.json]
[docker-compose.yml]
ディレクトリ名とファイル名は必ずこの名前にして下さい。名前が違うと機能しません。ファイルの用意が出来たら画面左下の角の方にある><のようなアイコンをクリックするとメニューが出るので、コンテナを再度開くを選ぶとdevcontainerが開く。初回は少し時間がかかるかも。
DevContainerの中にプロジェクトを作る
コンテナが出来たらまずprotobuf-compilerをインストールしなければならない。インストール方法は公式githubに書いてある。使っているディストリビューションによって違う。
サーバーサイドの構築
公式githubのリポジトリでは一つのプロジェクトにサーバとクライアントがまとめて入っていたが、ここではサーバとクライアントで独立した別のプロジェクトを作成することにする。実際に使う際にもサーバとクライアントが同じプロジェクト内にあるのも変だし。という事で、
として、別々のプロジェクトを作り、まずはcd serverでserverディレクトリに移動してサーバー側からコードを書いていく。
[Cargo.toml]
[build.rs] srcフォルダではなくCargo.tomlと同じ階層におくこと
[main.rs]
[proto/helloworld.proto]
クライアントサイドの構築
ここではシンプルなテストなので、Cargo.toml、protoファイル、build.rsのファイルは使いまわしで構わない。同じフォルダ構造で同じ階層にファイルを配置してください。main.rsだけ新規に用意します。
[main.rs]
最終的にはこのようなディレクトリ構造になっていると思います。
テストしてみる
まずserver側でcargo build cargo runしてみる。立ち上がったらclient側でもcargo build cargo runしてみる。上手く行けば、サーバーサイドには
クライアントサイドには
というようなレスポンスがターミナルに表示される。以上で、開通テストは終わりです。
今後
ストリーミング通信を実装したり、セキュリティ対策を施したりとしていきたいと思います。





