まとめ
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
を実行すると言う書き方。
C, C++ のプログラムのコンパイル等に使われている。
なので、 make backend
とすると backend を作ろうとして
「すでにあるよ」って怒られちゃう。
(参考)
omilab.naist.jp
そこで .PHONY
.PHONY
は target はファイル名じゃないと言うことを示すための記法。
(参考)
www.gnu.org
なので
.PHONY: backend
backend:
docker compose exec backend bash
とすることで、 backend
と言うファイルを作ろうとしているわけではない
と示すことができ、コマンドを実行することができる。