Files
paperless-ngx/docker/init-flow.md
T
Trenton H cc15aa0180 Fix: make index and llmindex init wait for tesseract language install (#14670)
* Fix: make index and llmindex init wait for tesseract language install

* Updates this out of date diagram and makes it Mermaid
2026-11-03 06:59:44 -08:00

2.2 KiB

Container init flow

Startup order of the s6-rc oneshot services under docker/rootfs/etc/s6-overlay/s6-rc.d/. An arrow A --> B means B lists A in its dependencies.d/, so B waits for A. Redundant (transitive) edges are omitted.

Each labelled box is a group of services that can run in parallel: every service in it starts as soon as its own dependencies finish, so services in the same box run in parallel. A service does not wait for the rest of its group, only for the arrows pointing at it. Long-running services such as init-tesseract-langs (package installs) overlap with several later steps.

flowchart TD
    subgraph w3 ["Run in parallel"]
        init-tesseract-langs
        init-modify-user
        init-wait-for-db
        init-wait-for-redis
    end
    subgraph w4 ["Run in parallel"]
        init-folders
        init-compile-bytecode
    end
    subgraph w6 ["Run in parallel"]
        init-search-index
        init-llmindex-migrate
        init-superuser
    end

    base --> init-start --> init-env-file

    init-env-file --> init-tesseract-langs
    init-env-file --> init-modify-user
    init-env-file --> init-wait-for-db
    init-env-file --> init-wait-for-redis
    init-start --> init-compile-bytecode

    init-modify-user --> init-folders
    init-modify-user --> init-compile-bytecode

    init-folders --> init-migrations
    init-compile-bytecode --> init-migrations
    init-wait-for-db --> init-migrations

    init-migrations --> init-search-index
    init-migrations --> init-llmindex-migrate
    init-migrations --> init-superuser

    init-tesseract-langs --> init-search-index
    init-tesseract-langs --> init-llmindex-migrate
    init-tesseract-langs --> init-system-checks
    init-superuser --> init-system-checks

    init-search-index --> init-custom-init
    init-system-checks --> init-custom-init
    init-wait-for-redis --> init-custom-init

    init-custom-init --> init-complete
    init-llmindex-migrate --> init-complete

init-search-index and init-llmindex-migrate run manage.py, which runs the Django system checks, including the check that the configured OCR languages are installed, so they wait for init-tesseract-langs.