version: "{{ compose_version }}" networks: proxy: name: "{{ traefik_network }}" # Use a bind mount for Hugo data, easier to pull new versions of blog volumes: website_files: driver: local driver_opts: type: none device: "{{ hugo_website }}" o: bind website_public: driver: local driver_opts: type: none device: "{{ hugo_website }}/public" o: bind services: builder: container_name: hugo_builder image: "klakegg/hugo:{{ hugo_version }}" volumes: - website_files:/src - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro # include content with publishdate in the future command: --buildFuture # Hugo will build only # when triggered restart: on-failure front: container_name: hugo_front image: nginx:alpine volumes: - website_public:/usr/share/nginx/html:ro - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro labels: traefik.http.routers.hugo.entrypoints: websecure traefik.http.routers.hugo.rule: "Host(`blog.{{ domain_name }}`)" traefik.http.services.hugo.loadbalancer.server.port: 80 traefik.enable: true networks: - proxy read_only: true tmpfs: - /var/cache/nginx - /run restart: unless-stopped