YAMLResume no Docker

Executa o YAMLResume instantaneamente com Docker

Estou super animado em anunciar que o YAMLResume agora tem uma imagem de docker, e podes executar o YAMLResume instantaneamente com docker.

YAMLResume Docker
asciinema

Por Que Docker?

O YAMLResume é uma ferramenta CLI de Node.js e uma biblioteca. Instalar o YAMLResume em si não é difícil pois só requer Node.js. De facto, podemos mesmo compilá-lo para um binário e executá-lo diretamente sem instalar Node.js.

No entanto, o YAMLResume tem uma dependência obrigatória de LaTeX, o que traz alguns novos problemas:

Embora já forneçamos um guia de instalação muito completo que cobre macOS, Windows, Ubuntu e RHEL, mesmo com instruções sobre como instalar o YAMLResume e o LaTeX e fazê-los funcionar juntos, o processo ainda pode ser doloroso para alguns utilizadores.

Docker é uma grande solução a estes problemas: pode empacotar tudo numa única imagem, facilitando a instalação e configuração.

Como Usar

Uma imagem vale mais que mil palavras. Aqui está uma captura de ecrã que mostra como usá-la:

Demo do YAMLResume Docker

A nossa imagem de docker tem tudo pré-empacotado, incluindo:

Podes criar um novo currículo instantaneamente com o seguinte comando:

docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml

Edita my-resume.yml em conformidade e depois constrói o currículo de YAML para PDF:

docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.yml

Sob o Capô

Se estás familiarizado com docker, provavelmente já sabes como funciona isto. Se não, aqui está uma explicação rápida:

  1. docker run ... yamlresume/yamlresume - executa um novo contentor da imagem yamlresume/yamlresume. Se esta imagem não existir na tua máquina local, será descarregada do Docker Hub.
  2. --rm - remove automaticamente o contentor quando sai.
  3. -v $(pwd):/home/yamlresume - monta o diretório atual ($(pwd)) no contentor em /home/yamlresume, permitindo que o contentor aceda a ficheiros locais.
  4. new my-resume.yml ou build my-resume.yml - executa o subcomando de CLI de yamlresume new ou build para criar ou construir um currículo com o nome de ficheiro my-resume.yml.

Basicamente, podes chamar todos os subcomandos CLI de yamlresume desta forma—basta adicionar o subcomando depois de yamlresume/yamlresume e seguir o guia de uso correspondente.

A flag -v é bastante importante porque monta o diretório atual ($(pwd)) no contentor em /home/yamlresume, permitindo a sincronização bidirecional de ficheiros entre o diretório local e o contentor. Sem esta flag, o artefacto de saída de construção perder-se-á depois de o contentor sair.

Engenharia

construir uma imagem de docker não é difícil se conheceres um pouco de docker. No entanto, envolver o YAMLResume em docker não é tão fácil como parece. Aqui estão alguns dos desafios.

A Configuração de LaTeX é Tediosa

Instalar uma distribuição LaTeX funcional demora tempo; geralmente demora cerca de 5–10 minutos descarregar e configurar uma distribuição LaTeX adequada. Nos executores de GitHub Action, este processo é ainda mais longo—até mais de 20 minutos.

RUN apt update && \
    apt install -y \
    texlive-xetex \
    texlive-fonts-extra \
    texlive-lang-all \
    fonts-noto-cjk \
    fonts-noto-cjk-extra \

Convertemo-lo num processo de 3 passos para construir a imagem de docker de yamlresume:

  1. Começar de uma imagem de Node.js como base.
  2. Instalar e configurar uma distribuição LaTeX.
  3. Instalar o CLI de yamlresume.

Como mencionado, o passo 2 é a parte que consome mais tempo. Se tivéssemos de começar do zero cada vez que precisássemos de atualizar a imagem de docker, demoraria 30 minutos para construir a imagem de docker num executor de ação do github.

Para evitar isto, usamos uma construção multi-etapa para cachear a distribuição LaTeX, pelo que não precisamos instalá-la do zero cada vez que atualizamos a imagem de docker.

Por isso, criamos uma nova yamlresume/yamlresume-base, que é uma imagem base que tem Node.js e uma distribuição LaTeX instaladas. Esta imagem base é estável e não será atualizada com muita frequência, e a nossa imagem yamlresume/yamlresume é construída sobre esta imagem base. Só demora 3 minutos descarregar a imagem yamlresume/yamlresume-base e instalar o CLI de yamlresume nela, o que reduz drasticamente o tempo de iteração.

Suporte Multi-Plataforma

Outro desafio é suportar construções multi-plataforma. Como sabemos, macOS M1 e posteriores são máquinas baseadas em ARM. Embora possam executar imagens de docker com arquitetura AMD64 através de emulação, o desempenho é 10 vezes pior.

Por isso, temos de suportar imagens multi-plataforma para yamlresume/yamlresume. Felizmente, o docker fornece oficialmente um guia detalhado sobre como construir imagens multi-plataforma em ações de github.

A imagem de docker do YAMLResume suporta duas plataformas: linux/amd64 e linux/arm64, que devem ser suficientes para cobrir a maioria das máquinas de desktop e servidor.

Disfruta do YAMLResume com docker!

Written by

Xiao Hanyu

At

Fri Jun 06 2025