まとめ
Docker を使った開発をしていていて
docker compose up
etc をイチイチ書くのが面倒なので、
Makefile を使おうとしたら
make: 'hoge' is up to date
と怒られちゃった時の話。
(結論)
実行したいコマンドと同名のディレクトリ, ファイルが存在している時は、
.PHONY をつけよう。
(参考) sumito.jp
ファイル構成は以下のような形
. ├── Makefile ├── backend | └── Dockerfile └── docker-compose.yml
🙅♀️ make backend
で怒られる Makefile
up: docker compose up -d backend: docker compose exec backend bash
🙆 make backend
が通る Makefile
up: docker compose up -d .PHONY: backend backend: docker compose exec backend bash
詳しく
Makefile はそもそも、
[作りたいもの]: [材料] (-----TAB-----) [作り方]
今回で言うと、 backend
を作るために
docker compose exec backend bash
を実行すると言う書き方。
なので、 make backend
とすると backend を作ろうとして
「すでにあるよ」って怒られちゃう。
(参考) omilab.naist.jp
そこで .PHONY
.PHONY
は target はファイル名じゃないと言うことを示すための記法。
(参考) www.gnu.org
なので
.PHONY: backend backend: docker compose exec backend bash
とすることで、 backend
と言うファイルを作ろうとしているわけではない
と示すことができ、コマンドを実行することができる。