blumeops/containers/valkey/container.py
Erich Blume 946fa75baa C1(valkey-mirror): add valkey container build
Native Dagger build of valkey 8.1.6-r0 on Alpine 3.22. Mirrors upstream
docker.io/valkey/valkey:8.1-alpine for paperless and immich sidecars.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 16:58:33 -07:00

47 lines
1.3 KiB
Python

"""Valkey — native Dagger build.
Alpine 3.22 base with the `valkey` apk package (8.1.x — Redis-compatible).
Mirrors `docker.io/valkey/valkey:8.1-alpine`, used by paperless and immich
as a cache/queue sidecar.
"""
import dagger
from dagger import dag
from blumeops.containers import oci_labels
# Alpine 3.22 ships valkey 8.1.6-r0. Alpine 3.23 jumps to 9.0 — hold on 3.22
# to keep this a 1:1 swap for the upstream `valkey:8.1-alpine` image.
VERSION = "8.1.6-r0"
ALPINE_BASE = "alpine:3.22"
async def build(src: dagger.Directory) -> dagger.Container:
ctr = (
dag.container()
.from_(ALPINE_BASE)
.with_exec(["apk", "add", "--no-cache", f"valkey={VERSION}"])
.with_exec(["mkdir", "-p", "/data"])
.with_exec(["chown", "valkey:valkey", "/data"])
.with_workdir("/data")
.with_exposed_port(6379)
.with_user("valkey")
.with_default_args(
args=[
"valkey-server",
"--bind",
"0.0.0.0",
"--protected-mode",
"no",
"--dir",
"/data",
]
)
)
return oci_labels(
ctr,
title="Valkey",
description="Valkey high-performance key/value datastore (Redis-compatible)",
version=VERSION,
)