はじめに
以前書いたメモが出てきたので、記事にしときます。
AthrillをDockerで動かす方法は
で紹介されていますが、折角なのでできるだけ小さくしてみたいと思います。
箱庭で数匹・数十匹のAthrillを同時に動かしたりできると面白そうですよね。
今回は、Dockerのscratchから構成したいと思います。
Athrillのstaticビルド
athrillを普通にビルドするとダイナミックリンクライブラリを利用するので、
何も入っていない環境で実行しようとするとコケます。
このため、スタティックにビルドしなおします。
Makefileをこんな感じに変えて、
/trunk/src/build/target/linux_v850e2m/Makefile
28: $(GCC) -O3 $(LFLAGS) $(AROBJS) -o $(TARGET) $(LIBS) -static
再ビルドします。
$ make clean; make
Dockerfile
docker用にフォルダ作って、静的ビルドしたathrillと
利用するバイナリ、aspや設定ファイル類を集めておき、そこでDockerfile作ります。
FROM scratch
COPY athrill2 .
COPY asp .
COPY memory.txt .
COPY device_config.txt .
CMD ["./athrill2", "-i", "-m", "memory.txt", "-d", "device_config.txt", "asp"]
今更気づきましたら、CMDでオプション渡す必要ないですね。athrillだけ叩くようにして、
引数で渡す方が素直そうです。
コンテナ作成
docker build -t athrill .
実行
docker container run -it athrill