YAMLResume に docker イメージ ができたことを発表できて非常に興奮しています。これで docker で YAMLResume を即座に実行 できます。
なぜ Docker なのか?
YAMLResume は Node.js CLI ツールとライブラリ です。YAMLResume 自体のインストールは Node.js のみが必要なので困難ではありません。実際、Node.js をインストールせずに直接実行できるバイナリにコンパイルすることもできます。
しかし、YAMLResume には LaTeX への強制依存があり、いくつかの新しい問題をもたらします:
- LaTeX のインストールには時間がかかる;適切な LaTeX ディストリビューションをダウンロードして設定するのに通常約 5-10 分かかる
- LaTeX は単一のバイナリプログラムではない;プログラムの集合である。一部のユーザーはマシンに多くのプログラムをインストールすることを嫌う
macOS、Windows、Ubuntu、RHEL をカバーし、YAMLResume と LaTeX をインストールして連携させる手順を含む非常に包括的なインストールガイド を既に提供していますが、一部のユーザーにとってこのプロセスは依然として苦痛である可能性があります。
Docker はこれらの問題に対する素晴らしい解決策です:すべてを単一のイメージにパッケージ化し、インストールと設定を簡単にします。
使用方法
百聞は一見に如かず。使用方法を示すスクリーンショットです:
私たちの docker イメージ には、以下を含むすべてが事前パッケージ化されています:
以下のコマンドで即座に新しい履歴書を作成できます:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
my-resume.yml
を適切に編集し、YAML から PDF に履歴書をビルドします:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.yml
内部の仕組み
docker に慣れている場合、これがどのように動作するかは既にご存知かもしれません。そうでない場合、簡単な説明です:
docker run ... yamlresume/yamlresume
-yamlresume/yamlresume
イメージから新しいコンテナを実行。このイメージがローカルマシンに存在しない場合、docker Hub からプルします--rm
- 終了時にコンテナを自動削除-v $(pwd):/home/yamlresume
- 現在のディレクトリ ($(pwd)
) をコンテナ内の/home/yamlresume
にマウントし、コンテナがローカルファイルにアクセスできるようにしますnew my-resume.yml
またはbuild my-resume.yml
- yamlresume CLI new または build サブコマンドを実行して、ファイル名my-resume.yml
で履歴書を作成またはビルド
基本的に、この方法で yamlresume
CLI サブコマンド をすべて呼び出すことができます—yamlresume/yamlresume
の後にサブコマンドを追加し、対応する使用ガイドに従うだけです。
-v
フラグは非常に重要です。現在のディレクトリ ($(pwd)
) をコンテナ内の /home/yamlresume
にマウントし、ローカルディレクトリとコンテナ間の双方向ファイル同期を可能にします。このフラグがないと、ビルド出力アーティファクトはコンテナ終了後に失われます。
エンジニアリング
docker を少し知っていれば、docker イメージの構築は困難ではありません。しかし、YAMLResume を docker でラップすることは聞こえるほど簡単ではありません。以下がいくつかの課題です。
LaTeX 設定は面倒
動作する LaTeX ディストリビューションのインストールには時間がかかります;適切な LaTeX ディストリビューションをダウンロードして設定するのに通常約 5-10 分かかります。GitHub Action ランナーでは、このプロセスはさらに長く—20 分以上 かかります。
RUN apt update && \
apt install -y \
texlive-xetex \
texlive-fonts-extra \
texlive-lang-all \
fonts-noto-cjk \
fonts-noto-cjk-extra \
yamlresume の docker イメージ の構築を 3 ステップのプロセスにしました:
- Node.js イメージをベースとして開始
- LaTeX ディストリビューションをインストール・設定
- yamlresume CLI をインストール
前述のように、ステップ 2 が最も時間のかかる部分です。docker イメージを更新する必要があるたびに最初から始めなければならない場合、github action ランナーで docker イメージを構築するのに 30 分かかります。
これを避けるため、LaTeX ディストリビューションをキャッシュするマルチステージビルドを使用し、docker イメージを更新するたびに最初からインストールする必要がないようにしました。
したがって、Node.js と LaTeX ディストリビューションがインストールされたベースイメージである新しい yamlresume/yamlresume-base を作成しました。このベースイメージは安定しており、頻繁に更新されることはなく、私たちの yamlresume/yamlresume
イメージはこのベースイメージの上に構築されます。yamlresume/yamlresume-base
イメージをプルダウンして yamlresume CLI をインストールするのに 3 分しかかからず、反復時間を大幅に短縮します。
マルチプラットフォームサポート
もう一つの課題はマルチプラットフォームビルド のサポートです。ご存知の通り、macOS M1 以降は ARM ベースのマシンです。エミュレーションによって AMD64 アーキテクチャの docker イメージを実行できますが、パフォーマンスは 10 倍悪くなります。
したがって、yamlresume/yamlresume
のマルチプラットフォームイメージをサポートする必要があります。幸い、docker は github actions でマルチプラットフォームイメージを構築する方法 についての詳細ガイドを公式に提供しています。
YAMLResume の docker イメージは2 つのプラットフォーム をサポートします:linux/amd64
と linux/arm64
で、これはほとんどのデスクトップとサーバーマシンをカバーするのに十分です。
docker で YAMLResume をお楽しみください!
Written by
Xiao HanyuAt
Fri Jun 06 2025