diff --git a/docs/Dockerfile b/docs/Dockerfile
index af481a27..c1992f32 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -2,6 +2,9 @@ FROM python:3-alpine
COPY requirements.txt /requirements.txt
+ARG version=master
+ENV VERSION=$version
+
RUN pip install -r /requirements.txt \
&& apk add --no-cache nginx \
&& mkdir /run/nginx
@@ -9,6 +12,7 @@ RUN pip install -r /requirements.txt \
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
COPY . /docs
-RUN sphinx-build /docs /build
+RUN mkdir -p /build/$VERSION \
+ && sphinx-build /docs /build/$VERSION
CMD nginx -g "daemon off;"
\ No newline at end of file
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
index 3f424a0a..63db07e2 100644
--- a/docs/_templates/layout.html
+++ b/docs/_templates/layout.html
@@ -1,2 +1,9 @@
-{% set version=github_version %}
{% extends "!layout.html" %}
+{% block document %}
+{% if version != stable_version %}
+
+
You are currently browsing documentation for the {{ version }} branch. Documentation for the stable {{ stable_version }} branch can be found here.
+
+{% endif %}
+{{ super() }}
+{% endblock %}
diff --git a/docs/_templates/page.html b/docs/_templates/page.html
deleted file mode 100644
index 97296793..00000000
--- a/docs/_templates/page.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{%- extends "layout.html" %}
-{% block body %}
- {{ body|replace("VERSION_TAG", version) }}
-{% endblock %}
diff --git a/docs/_templates/versions.html b/docs/_templates/versions.html
new file mode 100644
index 00000000..db4d332d
--- /dev/null
+++ b/docs/_templates/versions.html
@@ -0,0 +1,16 @@
+
+
+ Versions
+ v: {{ version }}
+
+
+
+
+ - {{ _('Versions') }}
+ {% for slug, url in versions %}
+ - {{ slug }}
+ {% endfor %}
+
+
+
+
diff --git a/docs/conf.py b/docs/conf.py
index f89b39fd..64997eb1 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -2,6 +2,8 @@
# -*- coding: utf-8 -*-
#
+import os
+
extensions = ['sphinx.ext.imgmath', 'sphinx.ext.viewcode']
templates_path = ['_templates']
source_suffix = '.rst'
@@ -9,9 +11,9 @@ master_doc = 'index'
project = 'Mailu'
copyright = '2018, Mailu authors'
author = 'Mailu authors'
-version = release = 'latest'
+version = release = os.environ.get('VERSION', 'master')
language = None
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'Dockerfile', 'docker-compose.yml']
pygments_style = 'sphinx'
todo_include_todos = False
html_theme = 'sphinx_rtd_theme'
@@ -33,6 +35,11 @@ html_context = {
'display_github': True,
'github_user': 'mailu',
'github_repo': 'mailu',
- 'github_version': 'master',
+ 'github_version': version,
+ 'stable_version': '1.5',
+ 'versions': [
+ ('1.5', '/1.5/'),
+ ('master', '/master/')
+ ],
'conf_py_path': '/docs/'
}
diff --git a/docs/contributors/environment.rst b/docs/contributors/environment.rst
index f1f447e2..a79f6bb9 100644
--- a/docs/contributors/environment.rst
+++ b/docs/contributors/environment.rst
@@ -113,7 +113,8 @@ Documentation is maintained in the ``docs`` directory and are maintained as `reS
docker build -t docs docs
docker run -p 127.0.0.1:8080:80 docs
-You can now read the local documentation by navigating to http://localhost:8080.
+In a local build Docker always assumes the version to be master.
+You can read the local documentation by navigating to http://localhost:8080/master.
.. note:: After modifying the documentation, the image needs to be rebuild and the container restarted for the changes to become visible.
diff --git a/docs/docker-compose.yml b/docs/docker-compose.yml
new file mode 100644
index 00000000..0caaa7a4
--- /dev/null
+++ b/docs/docker-compose.yml
@@ -0,0 +1,21 @@
+version: '3'
+
+
+services:
+ docs_master:
+ image: mailu/docs:master
+ labels:
+ - traefik.enable=true
+ - traefik.port=80
+ - traefik.main.frontend.rule=Host:${hostname};PathPrefix:/master/
+
+ docs_15:
+ image: mailu/docs:1.5
+ labels:
+ - traefik.enable=true
+ - traefik.port=80
+ - traefik.root.frontend.redirect.regex=.*
+ - traefik.root.frontend.redirect.replacement=/1.5/
+ - traefik.root.frontend.rule=Host:${hostname};PathPrefix:/
+ - traefik.main.frontend.rule=Host:${hostname};PathPrefix:/1.5/
+