Files
docker-images/README.md
T
ajp_anton 4cc2e8fc80
Build custom container images / build (map[base_image:php:8-fpm-alpine build_args:PHP_VERSION=8 context:php8-pgsql fingerprint_command:{ apk info -v | LC_ALL=C sort; find /usr/local/lib/php/extensions /usr/local/etc/php/conf.d -type f -exec sha256sum {} + | LC_ALL=C sort; } name:ph… (push) Successful in 49s
Build custom container images / build (map[base_image:postgres:18 build_args:PG_VERSION=18 POSTGIS_VERSION=3 VCHORD_VERSION=0.5.3 context:postgres fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; find /usr/lib/postgresql -type f -exec sha256su… (push) Successful in 1m42s
Build custom container images / build (map[base_image:python:3 build_args:PYTHON_VERSION=3 context:python-tools fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; } name:python-tools oci_labels:org.opencontainers.ima… (push) Successful in 54s
Build custom container images / build (map[base_image:python:3.12-slim build_args:PYTHON_VERSION=3.12-slim context:linkki-tiedotus fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; } name:linkki-tiedotus oci_labels:… (push) Successful in 29s
Build custom container images / build (map[base_image:python:3.12-slim build_args:PYTHON_VERSION=3.12-slim context:timepoll fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; } name:timepoll oci_labels:org.opencontai… (push) Successful in 44s
Add Timepoll availability polling application and image
2026-09-09 19:39:40 +00:00

175 lines
5.6 KiB
Markdown

# Custom Container Images
This repository builds a small set of OCI/container images published at
`git.ajpanton.se`.
The images include extended database/runtime images and standalone self-hosted
applications. Each image has its own build context and documentation.
## Images
| Image | Description |
| --- | --- |
| `git.ajpanton.se/ajp_anton/postgres-custom:18` | PostgreSQL 18 with selected extension packages installed and `pg_cron`/VectorChord preloaded. |
| `git.ajpanton.se/ajp_anton/php8-pgsql:8` | PHP 8 FPM on Alpine with PostgreSQL client runtime support and the `pdo_pgsql` PHP extension enabled. |
| `git.ajpanton.se/ajp_anton/python-tools:3` | Python 3 task runner with ExifTool and a web control panel for mounted task scripts. |
| `git.ajpanton.se/ajp_anton/linkki-tiedotus:1` | Web editor and scheduler for multilingual Telegram channel broadcasts. |
| `git.ajpanton.se/ajp_anton/timepoll:1` | Timezone-aware availability polls with a live voting grid. |
## Included Components
### `postgres-custom`
Base image:
- `postgres:18`
- Moving upstream major-version tag. Patch releases are picked up when the image
is rebuilt.
Installed from Debian/PostgreSQL apt repositories:
- `ca-certificates`
- `wget`
- `postgresql-18-cron`
- `postgresql-18-pgvector`
- `postgresql-18-postgis-3`
Installed from a GitHub release asset:
- VectorChord package `postgresql-18-vchord_0.5.3-1_amd64.deb`
- VectorChord is pinned to `0.5.3` at this time.
Runtime defaults added by this image:
- `shared_preload_libraries=pg_cron,vchord`
- `cron.database_name=firecrawl`
### `php8-pgsql`
Base image:
- `php:8-fpm-alpine`
- Moving upstream major-version tag. Patch releases are picked up when the image
is rebuilt.
Build-time package:
- `postgresql-dev`
Runtime package:
- `libpq`
Compiled PHP extension:
- `pdo_pgsql`
The compiled extension and PHP config are copied from a build stage into the
final runtime image.
### `python-tools`
Base image:
- `python:3`
- The image follows the moving Python 3 tag. When upstream Python 3 moves to a
new minor release, this image follows it on the next rebuild.
Installed from Debian apt repositories:
- `ca-certificates`
- `exiftool`
Pinned Python packages:
- `Flask==3.1.0`
- `waitress==3.0.2`
Included application:
- A server-rendered web control panel for discovering and running reviewed
Python scripts mounted at runtime, with typed form inputs and optional
internal recurring jobs.
- Per-group task queues, SQLite run history, captured output, and task-process
cancellation.
- The default command starts the control panel with `python -m app`.
Intended use:
- Run reviewed, autonomous task scripts mounted at runtime.
- Use the included task control panel. Its generic deployment example and
application documentation are in `python-tools/`.
- Keep host systems clean by avoiding host-level package installs.
### `linkki-tiedotus`
Base image:
- `python:3.12-slim`
- Moving upstream Python 3.12 patch-version tag. Base-image updates are picked
up on the next rebuild.
Included application:
- FastAPI web editor for drafting, scheduling, publishing, updating, and
deleting multilingual Telegram channel broadcasts.
- A persistent `/data` directory for configuration, user records, posts,
uploaded images, schedules, and publish history.
- The default command starts the application on port `8080`.
The image contains no configuration or broadcast data. Mount `/data` from a
persistent host directory and create its configuration from `linkki-tiedotus/config-examples/`.
### `timepoll`
Base image: `python:3.12-slim`, following Python 3.12 patch releases.
- Standalone FastAPI application with SQLite persistence and live browser updates.
- UTC-based yes/maybe voting, IANA timezones, optional blackouts, and private
poll administration links. No accounts required.
- FastAPI and Uvicorn follow releases below version 1; `tzdata` follows available
releases. Lucide browser icons are bundled at version 0.468.0.
- Persistent data is stored in `/data`; the application listens on port `8080`.
See [Timepoll's README](timepoll/README.md) for setup, voting rules and testing.
## Tags
Moving deployment tags:
- `git.ajpanton.se/ajp_anton/postgres-custom:18`
- `git.ajpanton.se/ajp_anton/php8-pgsql:8`
- `git.ajpanton.se/ajp_anton/python-tools:3`
- `git.ajpanton.se/ajp_anton/linkki-tiedotus:1`
- `git.ajpanton.se/ajp_anton/timepoll:1`
Descriptive tags:
- `git.ajpanton.se/ajp_anton/postgres-custom:18-postgis3-vchord0.5.3`
- `git.ajpanton.se/ajp_anton/php8-pgsql:8-fpm-alpine`
Convenience tags:
- `git.ajpanton.se/ajp_anton/postgres-custom:latest`
- `git.ajpanton.se/ajp_anton/php8-pgsql:latest`
- `git.ajpanton.se/ajp_anton/python-tools:latest`
- `git.ajpanton.se/ajp_anton/linkki-tiedotus:latest`
- `git.ajpanton.se/ajp_anton/timepoll:latest`
Tags are mutable. A weekly candidate build only repoints a deployment tag when
its content fingerprint changed: base image, build context, build arguments,
installed packages, or image-specific generated files.
## Update Cadence
Images are rebuilt weekly. They may also be rebuilt after repository changes or
manual runs. Each run builds a candidate without cache, then publishes it only
when its content fingerprint differs from the current deployment image.
Each rebuild pulls the current upstream base image and installs the currently
available apt/apk packages. If the base image or repository packages changed,
the resulting image digest changes and the same tag points to the new image.
Pinned build inputs do not update automatically. In this repository, VectorChord
is pinned to `0.5.3`; changing it requires a repository update.