🐳
docker環境でwatchmanを使う方法
せっかく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