Cómo instalar Jekyll usando Docker
15 Apr 2022
Existen 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/jekylldel 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
--rmindica que el contenedor se limpiará después de que el comando termine. El parámetro-itpermite 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