General Sphinx optimations

This commit is contained in:
Kevin Veen-Birkenbach 2025-03-16 17:24:50 +01:00
parent 2095f16402
commit 985ed797bd
No known key found for this signature in database
GPG Key ID: 44D8F11FD62F878E
8 changed files with 62 additions and 36 deletions

View File

@ -549,9 +549,9 @@ defaults_applications:
## Sphinx
sphinx:
version: "3.9-slim" # Use latest docker image
volumes:
source_dir: "{ansible_playbook_dir}" # Path from which sphinx reads the documentation
version: "3.9-slim" # Use latest docker image
repository_sphinx_source: "https://github.com/kevinveenbirkenbach/cymais.git" # Repository address to pull the source repository from
sphinx_exec_dir_relative: "sphinx/" # The relative path to the sphinx Makefile folder from the source dir
## Taiga

View File

@ -4,12 +4,19 @@
include_role:
name: docker-compose
- name: pull cymais repository
- name: "Create {{ host_sphinx_source_dir_absolute }} directory"
file:
path: "{{ host_sphinx_source_dir_absolute }}"
state: directory
mode: '0755'
- name: pull the source repository to build the Sphinx documentation from {{ applications.sphinx.repository_sphinx_source }}
git:
repo: "{{ repository_address_cymais }}"
dest: "{{ host_cymais_volume_dir_absolute }}"
repo: "{{ applications.sphinx.repository_sphinx_source }}"
dest: "{{ host_sphinx_source_dir_absolute }}"
update: yes
notify: docker compose project setup
clone: yes
notify: docker compose project build and setup
become: true
- name: "include role nginx-domain-setup for {{application_id}}"
@ -25,7 +32,7 @@
dest: "{{ sphinx_docker_file }}"
mode: '770'
force: yes
notify: docker compose project setup
notify: docker compose project build and setup
- name: "copy docker-compose.yml and env file"
include_tasks: copy-docker-compose-and-env.yml

View File

@ -1,22 +1,35 @@
FROM python:{{applications[application_id].version}}
# Install required packages including 'make'
RUN apt-get update && apt-get install -y make
ARG SPHINX_SOURCE_DIR
ARG SPHINX_BUILD_DIR
ARG SPHINX_EXEC_DIR
ARG SPHINX_APP_DIR
ARG SPHINX_SOURCE_DIR_RELATIVE
# Set the environment variables so they are available during build
ENV SPHINX_SOURCE_DIR=${SPHINX_SOURCE_DIR}
ENV SPHINX_SOURCE_DIR_RELATIVE=${SPHINX_SOURCE_DIR_RELATIVE}
ENV SPHINX_BUILD_DIR=${SPHINX_BUILD_DIR}
ENV SPHINX_EXEC_DIR=${SPHINX_EXEC_DIR}
ENV SPHINX_APP_DIR=${SPHINX_APP_DIR}
# Install required packages
RUN apt-get update && apt-get install -y make curl
# Set the working directory
WORKDIR {{docker_app_dir}}
WORKDIR ${SPHINX_APP_DIR}
# Copy the project files into the container
COPY {{host_cymais_volume_dir_relative}} {{docker_app_dir}}
COPY ${SPHINX_SOURCE_DIR_RELATIVE} ${SPHINX_APP_DIR}
# Install Python packages via requirements.txt
RUN cd {{docker_sphinx_dir}} && pip install --upgrade pip && pip install -r requirements.txt
RUN cd ${SPHINX_EXEC_DIR} && pip install --upgrade pip && pip install -r requirements.txt
# Build the HTML documentation using Sphinx with the defined directories
RUN cd {{docker_sphinx_dir}} && make html
RUN cd ${SPHINX_EXEC_DIR} && make html
# Expose port 8000 where the HTTP server will run
EXPOSE 8000
# Start a simple HTTP server to serve the built documentation
CMD ["python", "-m", "http.server", "8000", "--directory", "${BUILD_DIR}"]
CMD ["python", "-m", "http.server", "8000", "--directory", "${SPHINX_BUILD_DIR}"]

View File

@ -1,6 +1,14 @@
services:
application:
build: .
build:
context: .
dockerfile: Dockerfile
args:
SPHINX_SOURCE_DIR: {{docker_source_dir}}
SPHINX_BUILD_DIR: {{docker_output_dir}}
SPHINX_EXEC_DIR: {{docker_exec_dir}}
SPHINX_APP_DIR: {{docker_app_dir}}
SPINX_SOURCE_DIR_RELATIVE: {{host_sphinx_source_dir_relative}}
ports:
- "127.0.0.1:{{ports.localhost.http[application_id]}}:8000"
healthcheck:
@ -8,6 +16,7 @@ services:
interval: 1m
timeout: 10s
retries: 3
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
{% include 'templates/docker/container/networks.yml.j2' %}
{% include 'templates/docker/compose/networks.yml.j2' %}

View File

@ -1,2 +0,0 @@
SOURCE_DIR={{docker_source_dir}}
BUILD_DIR={{docker_output_dir}}

View File

@ -1,13 +1,12 @@
application_id: "sphinx"
application_id: "sphinx"
repository_address_cymais: "https://github.com/kevinveenbirkenbach/cymais.git" # Repository address to pull cymais from
host_sphinx_source_dir_relative: "volumes/source/" # Place where the sphinx source repository is stored on the host
host_sphinx_source_dir_absolute: "{{docker_compose.directories.instance}}{{host_sphinx_source_dir_relative}}" # Place where the sphinx source repository is stored on the host
host_cymais_volume_dir_absolute: "{{docker_compose.directories.volumes}}cymais/" # Place where the cymais repository is stored on the host
host_cymais_volume_dir_relative: "volumes/cymais/" # Place where the cymais repository is stored on the host
docker_app_dir: "/app/" # Folder in which the application is running
docker_source_dir: "{{docker_app_dir}}" # Folder which is used to be screened
docker_output_dir: "/docs/"
docker_html_output_dir: "{{docker_output_dir}}html/" # Folder to which the output is fuuuucking putted!
docker_exec_dir: "{{docker_app_dir}}{{applications.sphinx.sphinx_exec_dir_relative}}" # Folder which contains the sphinxs makefile and logic
docker_app_dir: "/app/" # Folder in which the application is running
docker_source_dir: "{{docker_app_dir}}" # Folder which is used to be screened
docker_output_dir: "/docs/" # Folder to which the output is fuuuucking putted!
docker_sphinx_dir: "{{docker_app_dir}}/sphinx/" # Folder which contains the sphinxs makefile and logic
sphinx_docker_file: "{{ docker_compose.directories.instance }}/Dockerfile"
sphinx_docker_file: "{{ docker_compose.directories.instance }}Dockerfile" # Path to the Dockerfile to build sphinx

View File

@ -2,19 +2,19 @@
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?= -c .
SPHINXBUILD ?= sphinx-build
SOURCE_DIR = ../
BUILD_DIR = ../docs
# from the environment
SPHINXOPTS ?= -c .
SPHINXBUILD ?= sphinx-build
SPHINX_SOURCE_DIR ?= ../
SPHINX_BUILD_DIR ?= ../docs
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCE_DIR)" "$(BUILD_DIR)" $(SPHINXOPTS) $(O)
@$(SPHINXBUILD) -M help "$(SPHINX_SOURCE_DIR)" "$(SPHINX_BUILD_DIR)" $(SPHINXOPTS) $(O)
.PHONY: help install Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCE_DIR)" "$(BUILD_DIR)" $(SPHINXOPTS) $(O)
@$(SPHINXBUILD) -M $@ "$(SPHINX_SOURCE_DIR)" "$(SPHINX_BUILD_DIR)" $(SPHINXOPTS) $(O)

View File

@ -32,7 +32,7 @@ html_sidebars = {
'**': [
'globaltoc.html',
'relations.html',
'sourcelink.html',
# 'sourcelink.html',
'local_md_files.html', # Include your custom template
'searchbox.html',
]