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 :wink: ) .

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