Cómo instalar Jekyll usando Docker
15 Apr 2022Existen dos formas de instalar el generador de sitios web Jekyll en un equipo de desarrollo:
- Clásica: Instalando las librerías de Ruby y el paquete gem de Jekyll, ya sea desde los repositorios del sistema operativo o descargando el fichero instalador.
- Usando contenedores: A partir de una imagen (Docker en nuestro caso) en la que ya esté instalado Ruby y Jekyll, se creará un contenedor desde el que se ejecutarán los comandos necesarios para trabajar.
La ventaja de utilizar Docker son:
- En un mismo equipo se podrá trabajar cómodamente con diferentes versiones de Jekyll, según lo requiera cada proyecto.
- El equipo permanecerá limpio de librerías que sólo se utilizan con Jekyll.
- Traspasar una instalación a otro equipo será tan fácil como copiar los ficheros de configuración del proyecto y ejecutar el comando que crea el contenedor.
Instalación con la imagen Docker
Lógicamente, antes de emplear este método es necesario haber instalado Docker en nuestro equipo.
- Iniciar el demonio Docker.
$ systemctl start docker.service
-
Con la siguiente instrucción crearemos un blog demo con la plantilla básica. Lo que hará este comando será lo siguiente:
- Descargar la versión indicada de la imagen Jeylll, si aún no la tenemos en local.
- Crear un contenedor basado en esa imagen llamado
mi-blog
. - Montar la carpeta actual local en la carpeta
/srv/jekyll
del contenedor. - Ejecutar en el contenedor el comando
jekyll new mi-blog
, lo que creará un nuevo proyecto Jekyll en la carpeta./mi-blog/
. - Abrir la carpeta del nuevo proyecto.
El parámetro
--rm
indica que el contenedor se limpiará después de que el comando termine. El parámetro-it
permite que se abra un seudo-TTY con stdin, lo que posibilita ejecutar comandos mientras el contenedor esté ejecutándose.
$ export JEKYLL_VERSION=4.2.2
export site_name="mi-blog"
docker run --rm \
--volume="$PWD:/srv/jekyll" \
-it jekyll/jekyll:$JEKYLL_VERSION \
sh -c "chown -R jekyll /usr/gem/ && jekyll new $site_name" \
&& cd $site_name
-------------------------------------------------------
Unable to find image 'jekyll/jekyll:4.2.2' locally
4.2.2: Pulling from jekyll/jekyll
df9b9388f04a: Pull complete
....
5b38ada00694: Pull complete
Digest: sha256:c6ef24955783315c86ce3cf5c60911c2cb4818967322f2d18eeb2193b3e85f1813
Status: Downloaded newer image for jekyll/jekyll:4.2.2
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux-musl]
Running bundle install in /srv/jekyll/mi-blog...
Bundler: Fetching gem metadata from https://rubygems.org/....
Bundler: Resolving dependencies...
....
Bundler: Bundle complete! 7 Gemfile dependencies, 31 gems now installed.
Bundler: Use `bundle info [gemname]` to see where a bundled gem is installed.
New jekyll site installed in /srv/jekyll/mi-blog.
-
Por ahora sólamente hemos iniciado el contenedor y creado los ficheros del proyecto, que se podrán leer, modificar o agregar en la carpeta
./mi-blog/
creada. -
Para construir el sitio web debemos ejecutar la siguiente instrucción.
$ docker run --rm --volume="$PWD:/srv/jekyll" -it jekyll/jekyll:$JEKYLL_VERSION jekyll build
------------------------------------------------------
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux-musl]
Configuration file: /srv/jekyll/_config.yml
Source: /srv/jekyll
Destination: /srv/jekyll/_site
Incremental build: disabled. Enable with --incremental
Generating...
Jekyll Feed: Generating feed for posts
done in 0.302 seconds.
Auto-regeneration: disabled. Use --watch to enable.
- Una vez construido el sitio (alojado en la carpeta
_site
), podremos levantar el servidor para comprobar su funcionamiento.
¡AVISO! Es probable que de error al iniciar el servidor. Si es el caso, añadir la siguiente línea en el fichero
Gemfile
:gem 'webrick'
$ docker run --name $site_name --volume="$PWD:/srv/jekyll" -p 3000:4000 -it jekyll/jekyll:$JEKYLL_VERSION jekyll serve --watch --drafts
-------------------------------------------------------
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using bundler 2.3.13
Using public_suffix 4.0.7
....
Installing webrick 1.7.0
Bundle complete! 8 Gemfile dependencies, 32 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux-musl]
Configuration file: /srv/jekyll/_config.yml
Source: /srv/jekyll
Destination: /srv/jekyll/_site
Incremental build: disabled. Enable with --incremental
Generating...
Jekyll Feed: Generating feed for posts
done in 0.292 seconds.
Auto-regeneration: enabled for '/srv/jekyll'
Server address: http://0.0.0.0:4000/
Server running... press ctrl-c to stop.
Para mostrar la página web debemos abrir en un navegador la siguiente dirección: http://localhost:3000/. Mientras se sirve el sitio, cualquier modificación que hagamos en los ficheros se verá reflejada en el navegador, simplemente actualizando la página afectada.
- Tras la creación del contenedor, éste se podrá iniciar y parar con las siguientes instrucciones.
- Abrir la carpeta del proyecto.
$ cd ~/proyectos-web/mi-blog
- Iniciar el contenedor.
$ docker container start mi-blog
- Parar el contenedor.
$ docker container stop mi-blog
Comentarios