docker imageを使う
Dockerイメージが多くの人によって作成され、公開されています。 ここでは@amutakeによって作成されているdocker-satysfiを紹介します。
Dockerのインストール
まずはDockerをインストールします。 Dockerのインストール方法についてはDockerの公式ドキュメントをご覧ください。
インストールが完了したら以下のコマンドを実行し、Hello from Docker!
と表示されることを確認してください。
docker run hello-world
docker-satysfiの基本的な使い方
docker-satysfiはamutake/satysfi
という名前でDocker Hubから提供されています。
このDockerイメージにはsatysfi
コマンドとsatyrographos
コマンドが含まれており、docker run amutake/satysfi
以降にこれらのコマンドを指定することで利用することができます。
例えばDockerイメージに含まれているsatysfi
やsatyrographos
のバージョンを確認したい場合は以下のようにします。
docker run amutake/satysfi satysfi --version
docker run amutake/satysfi satyrographos version
文書ファイルをコンパイルする
ではdocker-satysfiに含まれるsatysfi
コマンドを使って文書ファイルをコンパイルしてみましょう。なお、satysfi
コマンドの詳しい使い方は後述のHello SATySFi!に書かれているので、ここではdocker
コマンドのオプションのみ説明します。
カレントディレクトリにdemo.saty
という文書ファイルがあり、この文書ファイルをコンパイルしたい場合、以下のコマンドを実行します。
docker run --rm -v $(pwd):/satysfi amutake/satysfi satysfi demo.saty
これでdemo.pdf
というファイルができあがります。
このコマンドを分解してみると以下のようになります。
docker run
: Dockerコンテナを実行--rm
: 終了時にコンテナを削除(省略可)-v $(pwd):/satysfi
: カレントディレクトリをコンテナ内の/satysfi
にマウントamutake/satysfi
: イメージ名satysfi demo.saty
:demo.saty
をコンパイル
docker-satysfiでは/satysfi
というディレクトリがデフォルトのワーキングディレクトリとして設定されています。
コンテナ内で実行されるコマンドはこのディレクトリ内で実行されます。
この例ではホストのカレントディレクトリにdemo.saty
があるので、-v $(pwd):/satysfi
を指定することでコンテナ内からdemo.saty
が見えるようになり、satysfi demo.saty
でコンパイルすることができるようになります。
コンパイル結果のPDFはコンテナ内の/satysfi
に出力されます。/satysfi
にはホストのカレントディレクトリがマウントされているので、結果としてPDFはホストのカレントディレクトリに置かれるということになります。
SATySFiのバージョンを指定する
SATySFiの特定のバージョンを使いたい場合はdocker-satysfiを使うと簡単です。
例えばv0.0.6
を使いたい場合は以下のようにamutake/satysfi:0.0.6
と指定します。
docker run amutake/satysfi:0.0.6 satysfi --version
上記のコマンドを実行するとSATySFi version 0.0.6
と表示され、確かにv0.0.6
が使われていることが確認できます。
docker-satysfiの発展的な使い方
opamとsatyrographosでライブラリをインストールする
docker-satysfiには(後述する一部のタグを除いて)opam
コマンドとsatyrographos
コマンドが含まれているため、satyrographos-repo
に登録されているSATySFiのライブラリを利用することができます。
例えばsatysfi-base
をインストールしつつdemo.saty
という文書ファイルをコンパイルしたい場合、以下のようにします。
docker run --rm -v $(pwd):/satysfi amutake/satysfi \
sh -c "opam update && opam install satysfi-base && satyrographos install && satysfi demo.saty"
Satyrographosの詳しい使い方についてはパッケージの読み込み・インストールを参照してください。
より小さいサイズのイメージを使う
ここまでの説明で使ってきたイメージは圧縮後で1GB程度という比較的大きいイメージでした。 これは、OCamlコンパイラや、SATySFi・Satyrographos自体のビルドに必要なライブラリがすべて含まれているためです。
docker-satysfiでは、CIなどでの利用でイメージのダウンロード時間を少しでも削減したい場合や、機能を削ってもいいので小さいサイズのイメージが使いたい場合のために、slim
タグとopam-slim
タグが用意されています。
slim
タグがつけられているイメージはsatysfi
コマンドとsatyrographos
コマンドのみを含むイメージです。
docker-satysfiでは最も小さいイメージですが、opam
やOCamlコンパイラは含まれていません。
opam-slim
タグのイメージにはsatysfi
コマンドやsatyrographos
コマンドそしてopam
コマンドが含まれていますが、OCamlコンパイラなど、satysfi
やsatyrographos
をビルドするのに必要なバイナリ・ライブラリは一切含まれていません。しかし通常SATySFiで文書をコンパイルする場合はこれらのOCamlライブラリは必要ないので、ほとんどのユースケースではこのタグの機能で事足ります。なお、2021-03-24時点でopam-slim
は実験的なイメージであることに注意してください。
以上のように、slim
やopam-slim
は機能を削っている代わりに小さいイメージとなっています。
なお、slim
とopam-slim
はともに0.0.6-slim
や0.0.6-opam-slim
と指定することでSATySFiの特定のバージョンで利用することができます。
SATySFiの最新版を使う
docker-satysfiではnightly
というタグも提供しています。
これは毎日日本時間9:00にその時点でのSATySFiとSatyrographosの最新版をビルドしているイメージです。
nightly
タグはslim
タグと同様にsatysfi
とsatyrographos
しか含まれていない(opam
コマンドが含まれていない)ことに注意してください。