Jekyll in een Docker container
Hoi!
Ik heb al een tijdje verschillende applicaties draaien in containers. Het werkt erg makkelijk en vooral nu ik ook gebruik maak van Traefik is https ook een fluitje van een cent.
Nu had ik alleen nog geen persoonlijke website, dus ben ik op zoek gegaan naar een handige manier om dit voor elkaar te krijgen. Ik ben geen web-developer, dus het ging er vooral om dat het makkelijk op te zetten zou zijn.
Toen kwam ik uit op Jekyll. Dat kun je vrij eenvoudig in een container draaien en er zijn een triljoen templates voor, waardoor je eenvoudig een website/blog-site online kunt slingeren.
docker-compose.yml
Ik gebruik het volgende in mijn docker-compose.yml:
jekyll:
image: jekyll/builder:latest
container_name: web_lxz.nl
command: jekyll serve --watch --force_polling --verbose
ports:
- 4000:4000
volumes:
- ${USERDIR}/docker/websites/www_lxz.nl:/srv/jekyll
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=${TZ}
networks:
- traefik_proxy
labels:
- "traefik.enable=true"
- "traefik.backend=jekyll"
- "traefik.frontend.rule=Host:www.lxz.nl"
- "traefik.port=4000"
- "traefik.docker.network=traefik_proxy"
- "traefik.frontend.headers.SSLRedirect=true"
- "traefik.frontend.headers.STSSeconds=315360000"
- "traefik.frontend.headers.browserXSSFilter=true"
- "traefik.frontend.headers.contentTypeNosniff=true"
- "traefik.frontend.headers.forceSTSHeader=true"
- "traefik.frontend.headers.SSLHost=lxz.nl"
- "traefik.frontend.headers.STSIncludeSubdomains=true"
- "traefik.frontend.headers.STSPreload=true"
- "traefik.frontend.headers.frameDeny=true"
- "traefik.frontend.whiteList.useXForwardedFor=true"
Deze configuratie met de --watch
parameter zorgt ervoor dat ${USERDIR}/docker/websites/www_lxz.nl
wordt gemonitord en als ik iets aanpas in de files, de website opnieuw gebuild wordt en de aanpassing aan de voorkant zichtbaar wordt.
Dit geldt overigens niet voor de _config.yml
file. Als daarin iets aangepast wordt, dan dien je de container even te restarten.
In de opgegeven website-folder kun je een thema zetten, bijvoorbeeld moving (hier kijk je nu ook naar trouwens ) .
Dit thema heeft een vaste opbouw:
-
_config.yml
bevat een aantal globale setting, zoals de titel van je website en o.a. je e-mailadres. Maar ook gebruikte plugins en je social accounts voor op de about-pagina. - folder
_posts
bevat je blog-posts. Deze hebben logische bestandsnamen en in deze bestanden staan ook datum-velden en de categorie waar je post onder valt - folder
_layouts
bevat de layout van de pagina’s. Zo is er een aparte layout voor blog-posts, maar ook voor je Home- en About-pagina’s zijn er layouts - folder
_includes
bevat de header-, footer-, en social-elementen