Introducción

Jekyll é un potente xerador de páxinas estáticas, que se converteu nunha ferramenta esencial para simplificar o proceso do desenvolvemento web. A través da combinación intelixente do Markdown, Liquid, HTML e CSS, Jekyll permítenos transformar o noso contido nun sitio listo para a publicación, ocupándose de tarefas como a xeración de enlaces, deseño de encabezados e a implementanción de prantillas.

Se ven Jekyll é unha boa opción, a implementación tradicional require que teñamos Ruby instalado no noso entorno. Para aqueles que non traballamos regularmente con Ruby, ou que preferimos evitar a instalación de dependencias innecesarias no noso sistema, xorde a opción de empregar Docker.

Docker é un sistema aberto de desenvolvemento, despregue e execución de aplicacións. Ofrece un entorno illado para executar aplicacións sen afectar á infraestructura do sistema anfitrión. Isto significa que podemos encapsular noso entorno de desenvolvemento Jekyll nun contenedor Docker, o que facilita a sua compartición, replicación e posta en marcha. Eliminando a necesidade de configurar e reinstalar compoñenentes en múltiples entornos.

Neste contexto, creei un Dockerfile específicamente deseñado para traballar con Jekyll. Ao longo deste artigo, exploraremos cómo imprementar Jekyll utilizando Docker. Aproveitando as ventaxas da encapsulación e a portabilidade que ofrece Docker.

Instalación de Jekyll

Dependencias

Segundo o seu sitio web, Jekyll ten as seguintes dependencias para podelo instalar.

  • Ruby 2.5.0 ou superior
  • RubyGems
  • GCC e Make

Instalación

A instalación de Jekyll simplificase significativamente ca flexibilidade que ofrece Docker. No meu caso, optei por basear o contenedor na imaxe ruby:alpine3.17. A elección de Alpine Linux non só garante un contenedor livian se non que tamén minimiza a pegada no sistema, o cal é crucial para entornos de producción eficientes. Decanteime por fixar a versión da imaxe na 3.17, que era a máis actual no momento, para evitar que futuras actualizacións das imaxes puidesen romper o funcionamento do contenedor. Xa que no caso de apuntar a latest as novedades poderían traer incompatibilidades. Nun proxectiño coma este, dame igual non estar á última, xa que só vou usalo de cando en cando para xerar os contidos.

A través do seguinte Dockerfile, definimos claramente os pasos necesarios para construír o noso entorno Jekyll:

FROM ruby:alpine3.17

RUN apk update \
    && apk add gcc make libc-dev g++

RUN gem update --system \
    && gem install jekyll bundler minima \
    && gem cleanup

EXPOSE 4000

WORKDIR /application

ENTRYPOINT ["/bin/sh"]

Así dun vistazo rápido o que fago é:

  1. Indicarlle a imaxe base como Ruby:Alpine
  2. Actualizar os repositorios de Alpine e agregamos as ferramentas de desenvolvemento precisas.
  3. Actualizamos e instalamos Jekyll, Bundler e a prantilla minima.
  4. Limpamos os repositorios de Gem.
  5. Abrimos o porto 4000 para poder acceder dende fora.
  6. Dicímoslle que o noso directorio de traballo dentro do contenedor será o 4000.
  7. A interface exposta do contendor será o shell de sh. Polo que cando entremos no contenedor será con este co que interactúaremos.

Acceder ao contendor

Unha vez temos o Dockerfile, queda construir a imaxe. Para isto corremos o comando docker build -t jekyll RUTA_DOCKERFILE.

Con docker build dicimoslle a docker que constrúa o contenedor. Co parámetro -t dicímoslle que nome lle queremos por á imaxe, neste caso jekyll. O seguinte sería a ruta que leva ata o Dockerfile.

Unha vez temos a imaxe construída, podemos levantar o docker e acceder a el. Para isto lanzamos o seguinte comando docker run -p 8080:4000 -v RUTA_LOCAL_AO_PROXECTO:/application -it jekyll.

docker run é a orde para executar a imaxe, -p 8080:4000 vinculará o porto 8080 da máquina que executa o contendor, co porto 4000 do propio contenedor. -v RUTA_LOCAL_AO_PROXECTO:/application con isto enlazamos a ruta ao proxecto do equipo host ca ruta application do contenedor. E por último con -it jekyll entramos en modo interactivo na imaxe de jekyll.

Utilizando Jekyll

Agora que xa está instalado podemos comezar a crear o noso sitio. Que por defecto terá un artigo de exemplo e algunha configuración básica.

Crear un proxecto

Para crear un novo proxecto executaremos jekyll new NOME_DO_PROXECTO, dentro do contenedor. Isto vai crear unha carpeta nova co nome do proxecto dentro de aplicación. Ten en conta isto da próxima vez que fagas o docker run para que sexa mais cómodo, vinculando esta carpeta á application.

Servindo a páxina

Aínda que non teñamos nada escrito, xa podemos ver o que Jekyll xera como exemplo. Para isto dende dentro da carpeta do proxecto, vamos a executar os seguintes comandos:

  1. bundle install. Este comando vai instalar as dependencias que nos faltan a partir do arquivo Gemfile que xerou a aplicación.
  2. bundle exec jekyll serve -H 0.0.0.0. Isto vai facer que Jekyll xere o contido HTML a partir dos ficheiros en texto plano e que o presente para que poidamos visualizar a páxina. Sobre todo non hai que esquecer o parámetro -H 0.0.0.0, que será o que faga que a nosa web sexa accesible dende fora do contenedor. Doutro xeito non seríamos quen de alcanzar a web dende o noso equipo.

Unha vez Jekyll nos indique que xa está correndo, podemos abrir un navegador e acceder a http://localhost:8080. Para ver a nosa nova web.

Auto-regeneration: enabled for '/application'
    Server address: http://0.0.0.0:4000/
  Server running... press ctrl-c to stop.

Con isto xa temos o noso sitio listo. No seguinte artigo explicarei a estructura de carpetas, configuración, como engadir artigos e algunha cousiña mais para poder comezar a traballar.