Skip to content

Prepare the image for Peering Manager 1.11 - #48

Merged
gmazoyer merged 6 commits into
mainfrom
prepare-1.11
Sep 2, 2026
Merged

Prepare the image for Peering Manager 1.11#48
gmazoyer merged 6 commits into
mainfrom
prepare-1.11

Conversation

@gmazoyer

@gmazoyer gmazoyer commented Sep 2, 2026

Copy link
Copy Markdown
Member

Peering Manager 1.11 needs Python 3.12 and PostgreSQL 15 or later, and it
schedules its own system jobs. This branch brings the image and the compose
stack in line with it, and fixes two problems that 1.11 exposes.

  • Package the time zone database. The 1.11 requirements limit the tzdata
    package to Windows, and Alpine ships no zone data of its own, so every
    page that renders a date answered with a server error.

  • Build on Alpine 3.24 and Python 3.14. That release renames the NGINX Unit
    packages to freeunit and drops the unversioned PostgreSQL packages.

  • Serve the static files under the base path, whatever file sets it. Unit
    matched only /static/*, so a deployment under a base path lost its
    stylesheets and its scripts. Closes CSS Issues when BASE_PATH is set聽#39.

  • Expose more settings as environment variables, among them BASE_PATH and
    the settings that 1.11 introduces.

  • Leave housekeeping and PeeringDB synchronisation to the in-app scheduler.
    The two services stay available behind the external-scheduler profile
    for anyone who prefers an external one.

  • Give the migrations more time before the health check gives up, because
    the upgrade moves the cached IRR data to new tables.

Verified against the published v1.11.0 image. The workflow passes, and a
compose stack serves the dashboard and every asset it references, with and
without a base path. The application test suite passes inside the image.

The VERSION file is untouched, so it stays for the release commit.

Peering Manager 1.11 exports its requirements with environment
markers, which limits the tzdata package to Windows. Alpine ships no
time zone data of its own, so Python could not resolve a single zone
and every page that renders a date answered with a server error.
Unit matched only `/static/*`, so a deployment under a base path lost
its stylesheets and its scripts.

The container now asks Django for the base path in use, whatever file
sets it, and publishes the static directory under that path.
As of 1.11 the rqworker schedules housekeeping and PeeringDB
synchronisation itself, so the 2 extra services ran each task a
second time. A PeeringDB synchronisation can take about 90 minutes, so
an overlap starves the worker. They stay behind a profile for anyone
who prefers an external scheduler.
@gmazoyer
gmazoyer merged commit 83f19c7 into main Sep 2, 2026
8 of 9 checks passed
@gmazoyer
gmazoyer deleted the prepare-1.11 branch September 2, 2026 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CSS Issues when BASE_PATH is set

1 participant