Add custom container image builds
Build custom container images / build (map[build_args:PG_VERSION=18
POSTGIS_VERSION=3
VCHORD_VERSION=0.5.3
context:postgres name:postgres-custom tags:git.ajpanton.se/ajp_anton/postgres-custom:18
git.ajpanton.se/ajp_anton/postgres-custom:18-postgis3-vchord0.5.3
git.ajpanton.se/ajp_an… (push) Failing after 2m39s
Build custom container images / build (map[build_args:PHP_VERSION=8
context:php8-pgsql name:php8-pgsql tags:git.ajpanton.se/ajp_anton/php8-pgsql:8
git.ajpanton.se/ajp_anton/php8-pgsql:8-fpm-alpine
git.ajpanton.se/ajp_anton/php8-pgsql:latest
]) (push) Failing after 16s
Build custom container images / build (map[build_args:PG_VERSION=18
POSTGIS_VERSION=3
VCHORD_VERSION=0.5.3
context:postgres name:postgres-custom tags:git.ajpanton.se/ajp_anton/postgres-custom:18
git.ajpanton.se/ajp_anton/postgres-custom:18-postgis3-vchord0.5.3
git.ajpanton.se/ajp_an… (push) Failing after 2m39s
Build custom container images / build (map[build_args:PHP_VERSION=8
context:php8-pgsql name:php8-pgsql tags:git.ajpanton.se/ajp_anton/php8-pgsql:8
git.ajpanton.se/ajp_anton/php8-pgsql:8-fpm-alpine
git.ajpanton.se/ajp_anton/php8-pgsql:latest
]) (push) Failing after 16s
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
.git
|
||||
.gitea
|
||||
local
|
||||
README.md
|
||||
@@ -0,0 +1,70 @@
|
||||
name: Build custom container images
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "27 3 * * 1"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
env:
|
||||
REGISTRY: git.ajpanton.se
|
||||
OWNER: ajp_anton
|
||||
PG_VERSION: "18"
|
||||
POSTGIS_VERSION: "3"
|
||||
VCHORD_VERSION: "0.5.3"
|
||||
PHP_VERSION: "8"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
image:
|
||||
- name: postgres-custom
|
||||
context: postgres
|
||||
tags: |
|
||||
git.ajpanton.se/ajp_anton/postgres-custom:18
|
||||
git.ajpanton.se/ajp_anton/postgres-custom:18-postgis3-vchord0.5.3
|
||||
git.ajpanton.se/ajp_anton/postgres-custom:latest
|
||||
build_args: |
|
||||
PG_VERSION=18
|
||||
POSTGIS_VERSION=3
|
||||
VCHORD_VERSION=0.5.3
|
||||
- name: php8-pgsql
|
||||
context: php8-pgsql
|
||||
tags: |
|
||||
git.ajpanton.se/ajp_anton/php8-pgsql:8
|
||||
git.ajpanton.se/ajp_anton/php8-pgsql:8-fpm-alpine
|
||||
git.ajpanton.se/ajp_anton/php8-pgsql:latest
|
||||
build_args: |
|
||||
PHP_VERSION=8
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Log in to Gitea container registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ gitea.actor }}
|
||||
password: ${{ secrets.GITEA_TOKEN }}
|
||||
|
||||
- name: Build and push ${{ matrix.image.name }}
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: ./${{ matrix.image.context }}
|
||||
push: true
|
||||
tags: ${{ matrix.image.tags }}
|
||||
build-args: ${{ matrix.image.build_args }}
|
||||
pull: true
|
||||
@@ -0,0 +1 @@
|
||||
local/
|
||||
@@ -0,0 +1,52 @@
|
||||
# Custom container images
|
||||
|
||||
Small custom container images published to the Gitea container registry at
|
||||
`git.ajpanton.se`.
|
||||
|
||||
## Images
|
||||
|
||||
| Image | Purpose | Base |
|
||||
| --- | --- | --- |
|
||||
| `git.ajpanton.se/ajp_anton/postgres-custom:18` | PostgreSQL with `pg_cron`, `pgvector`, PostGIS, and VectorChord | `postgres:18` |
|
||||
| `git.ajpanton.se/ajp_anton/php8-pgsql:8` | PHP-FPM with the `pdo_pgsql` extension | `php:8-fpm-alpine` |
|
||||
|
||||
There is no custom nginx image here yet. The current web-server image can stay
|
||||
on upstream `nginx:*alpine` unless custom nginx modules or baked-in config are
|
||||
needed.
|
||||
|
||||
## How Updates Work
|
||||
|
||||
The workflow in `.gitea/workflows/build-images.yaml` rebuilds and pushes these
|
||||
images on:
|
||||
|
||||
- pushes to `main`
|
||||
- manual workflow runs
|
||||
- the weekly schedule in the workflow
|
||||
|
||||
Each scheduled run asks Docker to pull the current base image before building.
|
||||
During the build, package managers also install the currently available packages
|
||||
from their configured repositories. If the upstream base image or installed
|
||||
packages have changed, the resulting image digest changes even when the tag name
|
||||
stays the same.
|
||||
|
||||
Container update tools can then watch the pushed tags by digest. When the remote
|
||||
digest for a watched tag differs from the locally running image digest, the tool
|
||||
can report or apply an update.
|
||||
|
||||
Pinned build arguments, such as `VCHORD_VERSION`, do not update themselves.
|
||||
Changing those values requires a commit or an additional automation step that
|
||||
checks upstream releases and updates this repository.
|
||||
|
||||
## Publishing
|
||||
|
||||
The workflow publishes these tags:
|
||||
|
||||
- `git.ajpanton.se/ajp_anton/postgres-custom:18`
|
||||
- `git.ajpanton.se/ajp_anton/postgres-custom:18-postgis3-vchord0.5.3`
|
||||
- `git.ajpanton.se/ajp_anton/postgres-custom:latest`
|
||||
- `git.ajpanton.se/ajp_anton/php8-pgsql:8`
|
||||
- `git.ajpanton.se/ajp_anton/php8-pgsql:8-fpm-alpine`
|
||||
- `git.ajpanton.se/ajp_anton/php8-pgsql:latest`
|
||||
|
||||
The workflow uses Gitea Actions and the built-in `GITEA_TOKEN` with package
|
||||
write permission.
|
||||
@@ -0,0 +1,14 @@
|
||||
ARG PHP_VERSION=8
|
||||
FROM php:${PHP_VERSION}-fpm-alpine AS build
|
||||
|
||||
RUN set -eux; \
|
||||
apk add --no-cache postgresql-dev; \
|
||||
docker-php-ext-install pdo_pgsql
|
||||
|
||||
FROM php:${PHP_VERSION}-fpm-alpine
|
||||
|
||||
RUN set -eux; \
|
||||
apk add --no-cache libpq
|
||||
|
||||
COPY --from=build /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
|
||||
COPY --from=build /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
|
||||
@@ -0,0 +1,21 @@
|
||||
ARG PG_VERSION=18
|
||||
FROM postgres:${PG_VERSION}
|
||||
|
||||
ARG PG_VERSION=18
|
||||
ARG POSTGIS_VERSION=3
|
||||
ARG VCHORD_VERSION=0.5.3
|
||||
|
||||
RUN set -eux; \
|
||||
apt-get update; \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
wget \
|
||||
postgresql-${PG_VERSION}-cron \
|
||||
postgresql-${PG_VERSION}-pgvector \
|
||||
postgresql-${PG_VERSION}-postgis-${POSTGIS_VERSION}; \
|
||||
wget -O /tmp/vchord.deb "https://github.com/tensorchord/VectorChord/releases/download/${VCHORD_VERSION}/postgresql-${PG_VERSION}-vchord_${VCHORD_VERSION}-1_amd64.deb"; \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends /tmp/vchord.deb; \
|
||||
rm -f /tmp/vchord.deb; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
CMD ["postgres", "-c", "shared_preload_libraries=pg_cron,vchord", "-c", "cron.database_name=firecrawl"]
|
||||
Reference in New Issue
Block a user