🐳

docker環境でwatchmanを使う方法

2021/11/11に公開

せっかくdockerでwatchmanを使えるようにDockerfileを書いたが、結局使わなかったのでここに供養します。

背景

jsonファイル監視して、変更があるたびにjsで書かれたスクリプトファイルを実行したかった。

Dockerfileの中身

FROM node:14-buster-slim

RUN apt-get update -y
RUN apt-get install -y git libssl-dev autoconf automake libtool pkg-config build-essential

WORKDIR /lib
RUN git clone https://github.com/facebook/watchman.git -b v4.9.0 --depth 1
WORKDIR /lib/watchman
RUN ls -alF
RUN ./autogen.sh
RUN ./configure --disable-dependency-tracking --enable-lenient
RUN make
RUN make install 
RUN mkdir /app

公式ドキュメント に準拠してインストールしていきます。
macならhomebrewで簡単に入りますが、linuxだと結構ややこしいです。
(ちなみにだるすぎて、一瞬docker内でhomebrew入れようとしましたが、流石に筋が悪いのでお勧めしません)

公式ドキュメント通りにlibssl-dev autoconf automake libtoolを入れますが、これだけでは動きません。
ビルドするために、g++やmakeが必要なので、build-essentialを追加します。

またこのままでは、Cのコンパイルでこけてしまうので、オプションをつけます。--disable-dependency-tracking --enable-lenient
参考記事

これでコマンドwatchmanで起動できるようになりました。

なぜ使うのやめたか

色々触ってたら、結局 inotifywait の方が簡単でした。
以下のコマンドで似たようなことができます。

$ apt install inotify-tools
$ while inotifywait -e modify -r /app; do node index.js; done

Discussion