0
0

Windows11環境でMakefileを使ってmakeコマンドを実行する方法 + 実例 (Docker)

Posted at

概要

RustでWebサーバーとSurealDBのサーバーを立ててアプリケーションを作ろうと考えた時に、Dockerでコンテナを作って開発を進めたいなと思ったため、本稿を書くことになりました。

本稿の目的

Makefileで短縮したコマンドをmakeコマンドで実行することです

やろうとしていることは以下の通りです

  • chocolateyのインストール
  • chocolateyを使ってmakeのインストール
  • Makefileの作成・編集
  • makeコマンドの実行
  • 【おまけ】Makefileに冗長なDockerコマンドを書いてDockerでの開発を楽にする

chocolateyのインストール手順

一応makeコマンドがまだ使用できない状態をお見せします。
1 makeコマンドが使用できない.png

では、まずはchocolateyをインストールしましょう。

1. Powershellを管理者権限で開いてください。

2 powershellを管理者権限で開く.png

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をインストールすることができました。
3 chocolateyのインストール.png

スクリーンショット 2024-07-13 190339.png

chocolateyをインストールしたため、これでchocoコマンドが使用できるようになりました。
【公式】chocoコマンド一覧

makeのインストール手順

makeのインストールは、下記のコマンドを実行するだけです。

choco install make

image.png

スクリーンショット 2024-07-13 190432.png

Makefileを作成・編集

お好きなプロジェクトを開いて、Makefileを作成しましょう。

Bashの場合

touch Makefile

コマンドプロンプトの場合

echo > Makefile

Powershellの場合

New-Item C:\programming_directory\rust_project\simple-todo-app\Makefile -ItemType "File"

※みなさんの絶対パスに置換してくださいね。

私はBashでMakefileを作成しました。
スクリーンショット 2024-07-13 194830.png

VSCodeの拡張子もインストールしておきましょう。
スクリーンショット 2024-07-13 195026.png

いくつかコマンドを書きました。
※今回はコマンドのcargo, dockerコマンドの説明は省きます。

makeコマンドの作成

makeの後に入力したい後続のコマンドを記述してコロン (:)を付けて、実行したいコマンドを記述するだけです。

例:up: の場合は、make upでDocker上にコンテナを一気に作ります
スクリーンショット 2024-07-13 195734.png

さっそく自作したmake installを実行してみましょう。(追加するクレートをいくつか減らしました)
スクリーンショット 2024-07-13 200528.png

このように必要なクレートがインストールできていますね。
スクリーンショット 2024-07-13 201305.png

【おまけ】Makefileを使って冗長なDockerコマンドを短縮しよう

最後にDockerにSurrealDBのコンテナを作成・実行し、コンテナの停止・削除を行いましょう。
※今回はMakefileの活用方法のみを紹介するため、Dockerfile・docker-compose.ymlを用意しません。

コンテナの作成・実行:make run
スクリーンショット 2024-07-13 201543.png

スクリーンショット 2024-07-13 201553.png

コンテナの停止・削除:make remove
スクリーンショット 2024-07-13 201631.png

スクリーンショット 2024-07-13 201842.png

補足

環境変数を使用する: ${DATABASE_NAME}

Makefileは.envから環境変数を読み込んでくれるため、特定のコンテナのログだけ見たかったり、シェルを操作する時に便利です。

下記ではdocker-compose logs dbmake logs-dbに短縮して実行できるようにしています。
Screenshot 2024-07-13 211203.png

CLI上で動的に値を入力する:$(変数名)

例えば、CLI上で好きなサービスにシェルアクセスしたい時に使用します。
下記ではdocker-compose exec db /bin/bashmake exec app=dbに短縮して実行できるようにしています。

まとめ

  • chocolateyはCLIでソフトウェアをインストール、アップデート、アンインストールするソフトウェア
  • makeはソフトウェアのビルドプロセスを自動化するためのツール
  • Makefileはビルドやコンパイル、実行可能ファイルの生成などの作業を自動化するためのファイル
  • makeコマンドを自作することで、冗長なコマンドを短縮できる

私のGitHubにてDockerfile, docker-compose.yml, Makefileを載せていますので、必要な方はご利用ください。
Actix Webプロジェクト

最後まで読んでいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0