BuildVuをDockerで実行する
BuildVuは自己完結型のJARとして配布されているため、カスタムDockerイメージをビルドすることなく、標準的なJavaイメージの中で実行できます。このページでは、JARを公式のeclipse-temurin
イメージにマウントし、docker runをjava -jarのラッパーとして使用することで、BuildVuをDockerで実行する方法を説明します。
この方法は、JavaがインストールされていないマシンでBuildVuを実行したい場合や、システム全体に影響を与えずに特定のJavaバージョンを固定したい場合に便利です。
BuildVuをREST Webサービスとして実行したい場合は、あらかじめビルドされたマイクロサービスイメージを使用するBuildVu Dockerイメージの実行方法 を参照してください。
- Dockerのインストール
- buildvu-html.jarまたはbuildvu-svg.jarのダウンロード が必要です
eclipse-temurin:25-jreなどのJava 17以降のイメージ(初回実行時にDockerが自動でプルします)
以下のコマンドは、BuildVu JARとファイルが格納されているディレクトリの2つをコンテナにマウントします。/path/to/buildvu-html.jarをお使いのマシン上のJARの場所に、/path/to/dataを入力ファイルが入っているディレクトリに置き換えてください。
docker run --rm \
-v /path/to/buildvu-html.jar:/app/buildvu-html.jar \
-v /path/to/data:/data \
eclipse-temurin:25-jre \
java -jar /app/buildvu-html.jar /data/input.pdf /data/output
各オプションの説明:
-v /path/to/buildvu-html.jar:/app/buildvu-html.jar:BuildVu JARをコンテナ内の/app/buildvu-html.jarにマウントします。-v /path/to/data:/data:ファイルをコンテナ内の/dataにマウントします。これにより、入力・出力パスは/dataからの相対パスで指定します。変換後の出力はお使いのマシン上のこのディレクトリに書き込まれます。--rm:変換が完了したらコンテナを削除します。
JARとファイルは実行時にマウントされるため、イメージを再ビルドする必要はありません。BuildVuのバージョンを変更するには、最初の-vで別のJARを指定するだけです。
Windows: マウントにはWindowス形式のパスを使用してください(例:
C:\path\to\data:/data)。また、コマンドを1行にまとめるか、行継続文字の\をバックティック`(PowerShell)またはキャレット^(コマンドプロンプト)に置き換えてください。
Linux: マウントされたディレクトリに書き込まれたファイルは
rootの所有になります。出力ファイルを自分のユーザーの所有にするには、コマンドに--user $(id -u):$(id -g)を追加してください。Docker Desktop for WindowsまたはmacOSでは不要です。
ローカルで実行する場合と同様に、-jarの前にJVMフラグやBuildVuのシステムプロパティを渡すことができます。たとえば、ヒープサイズを増やす場合は次のようにします:
docker run --rm \
-v /path/to/buildvu-html.jar:/app/buildvu-html.jar \
-v /path/to/data:/data \
eclipse-temurin:25-jre \
java -Xmx2g -jar /app/buildvu-html.jar /data/input.pdf /data/output
渡すことができるBuildVuの設定やシステムプロパティ(-D...)は、JARを直接実行する場合と同じです。詳細についてはコマンドラインからのBuildVuの実行
を参照してください。
毎回フルコマンドを入力するのは面倒です。LinuxおよびmacOSでは、シェルエイリアスでラップすることで、BuildVuの引数だけを入力すれば済むようになります。このエイリアスでは$(pwd)を使用して、実行時のカレントディレクトリをマウントします:
alias buildvu='docker run --rm -v /path/to/buildvu-html.jar:/app/buildvu-html.jar -v "$(pwd)":/data eclipse-temurin:25-jre java -jar /app/buildvu-html.jar'
これにより、任意のディレクトリから次のように変換を実行できます:
buildvu /data/input.pdf /data/output
aliasの行を~/.bashrcまたは~/.zshrcに追加することで、恒久的に有効にできます。
より汎用的な方法として、たとえば/usr/local/bin/buildvuにスクリプトとして保存することもできます:
#!/usr/bin/env bash
docker run --rm \
-v /path/to/buildvu-html.jar:/app/buildvu-html.jar \
-v "$(pwd)":/data \
eclipse-temurin:25-jre \
java -jar /app/buildvu-html.jar "$@"
chmod +x /usr/local/bin/buildvuで実行可能にすれば、任意のディレクトリから変換を実行できます:
buildvu /data/input.pdf /data/output
(これらのラッパーはBash/Zsh向けの省略記法です。Windowsでは上記のフルdocker runコマンドを実行するか、PowerShell関数を作成してください。)
パスはホストマシン上ではなく、コンテナ内部で解決されます。-v /path/to/data:/dataのマウントにより、ファイルは/dataで利用可能になるため、入力・出力パスは/dataからの相対パスで指定する必要があります(例:/data/input.pdf)。ホストマシン上のパスは使用できません。変換したいファイルが、マウントしたディレクトリ内にあることを確認してください。
マウントする方法はシンプルです。イメージをビルドする必要がなく、別のJARを指定するだけでBuildVuのバージョンを切り替えられます。CI環境やデプロイのために自己完結型のイメージが必要な場合は、小さなDockerfileを作成してください:
FROM eclipse-temurin:25-jre
COPY buildvu-html.jar /app/buildvu-html.jar
ENTRYPOINT ["java", "-jar", "/app/buildvu-html.jar"]
docker build -t my-buildvu .でビルドし、ファイルを/dataにマウントして実行します。
いいえ。BuildVuにはJava 17以降が必要なので、互換性のあるJREを提供するイメージであれば何でも使用できます。デフォルトとしてJava 25イメージeclipse-temurin:25-jre
を推奨しているのは、小サイズで公式かつ最新の状態が保たれているためですが、より小さなイメージのためにAlpineバリアントや他のベンダーのJavaイメージを使用することも可能です。ただし、Java 17以降であることが条件です。互換性の詳細についてはBuildVuがサポートするJavaバージョン
を参照してください。
この設定は1回の変換を実行して終了するもので、スクリプトや単発のジョブに最適です。BuildVuを常時稼働するRESTサービスとして実行するには、あらかじめビルドされたDockerイメージを使用してください。詳細はBuildVu Dockerイメージの実行方法 を参照してください。
いいえ。BuildVuはシステムにインストールされたフォントを使用せず、Dockerイメージ内にfontconfigも必要ありません。
BuildVuはOfficeドキュメントを変換する際、LibreOffice
を使用してまずPDFに変換します。eclipse-temurinイメージにはLibreOfficeが含まれていないため、この設定ではOfficeドキュメントの変換は動作しません。Officeドキュメントを変換するには、カスタムイメージにLibreOfficeをインストールするか、LibreOfficeを同梱したDockerマイクロサービスイメージ
を使用してください。
