概要
RustでWebサーバーとSurealDBのサーバーを立ててアプリケーションを作ろうと考えた時に、Dockerでコンテナを作って開発を進めたいなと思ったため、本稿を書くことになりました。
本稿の目的
Makefileで短縮したコマンドをmakeコマンドで実行することです
やろうとしていることは以下の通りです
- chocolateyのインストール
- chocolateyを使ってmakeのインストール
- Makefileの作成・編集
- makeコマンドの実行
- 【おまけ】Makefileに冗長なDockerコマンドを書いてDockerでの開発を楽にする
chocolateyのインストール手順
では、まずはchocolateyをインストールしましょう。
1. Powershellを管理者権限で開いてください。
2. Powershellのコマンドライン上で下記のコマンドを実行しましょう。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
コマンドプロンプトでもchocolateyのインストールはできます。
同じく管理者権限でコマンドプロンプトを開いて、下記のコマンドを実行しましょう。
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
勢い余って実行してしまいましたが、これでchocolateyをインストールすることができました。
chocolateyをインストールしたため、これでchocoコマンドが使用できるようになりました。
【公式】chocoコマンド一覧
makeのインストール手順
makeのインストールは、下記のコマンドを実行するだけです。
choco install make
Makefileを作成・編集
お好きなプロジェクトを開いて、Makefileを作成しましょう。
Bashの場合
touch Makefile
コマンドプロンプトの場合
echo > Makefile
Powershellの場合
New-Item C:\programming_directory\rust_project\simple-todo-app\Makefile -ItemType "File"
※みなさんの絶対パスに置換してくださいね。
いくつかコマンドを書きました。
※今回はコマンドのcargo, dockerコマンドの説明は省きます。
makeコマンドの作成
makeの後に入力したい後続のコマンドを記述してコロン (:)を付けて、実行したいコマンドを記述するだけです。
例:up: の場合は、make upでDocker上にコンテナを一気に作ります
さっそく自作したmake installを実行してみましょう。(追加するクレートをいくつか減らしました)
【おまけ】Makefileを使って冗長なDockerコマンドを短縮しよう
最後にDockerにSurrealDBのコンテナを作成・実行し、コンテナの停止・削除を行いましょう。
※今回はMakefileの活用方法のみを紹介するため、Dockerfile・docker-compose.ymlを用意しません。
補足
環境変数を使用する: ${DATABASE_NAME}
Makefileは.envから環境変数を読み込んでくれるため、特定のコンテナのログだけ見たかったり、シェルを操作する時に便利です。
下記ではdocker-compose logs db
をmake logs-db
に短縮して実行できるようにしています。
CLI上で動的に値を入力する:$(変数名)
例えば、CLI上で好きなサービスにシェルアクセスしたい時に使用します。
下記ではdocker-compose exec db /bin/bash
をmake exec app=db
に短縮して実行できるようにしています。
まとめ
- chocolateyはCLIでソフトウェアをインストール、アップデート、アンインストールするソフトウェア
- makeはソフトウェアのビルドプロセスを自動化するためのツール
- Makefileはビルドやコンパイル、実行可能ファイルの生成などの作業を自動化するためのファイル
- makeコマンドを自作することで、冗長なコマンドを短縮できる
私のGitHubにてDockerfile, docker-compose.yml, Makefileを載せていますので、必要な方はご利用ください。
Actix Webプロジェクト
最後まで読んでいただきありがとうございました!