diff --git a/src/bci_build/package/__init__.py b/src/bci_build/package/__init__.py index d65e0b84b..caa421735 100644 --- a/src/bci_build/package/__init__.py +++ b/src/bci_build/package/__init__.py @@ -1469,6 +1469,7 @@ def generate_disk_size_constraints(size_gb: int) -> str: from .python import PYTHON_3_11_CONTAINERS # noqa: E402 from .python import PYTHON_3_12_CONTAINERS # noqa: E402 from .python import PYTHON_TW_CONTAINERS # noqa: E402 +from .redis import REDIS_CONTAINERS # noqa: E402 from .rmt import RMT_CONTAINERS # noqa: E402 from .ruby import RUBY_CONTAINERS # noqa: E402 from .rust import RUST_CONTAINERS # noqa: E402 @@ -1489,6 +1490,7 @@ def generate_disk_size_constraints(size_gb: int) -> str: *REGISTRY_CONTAINERS, *HELM_CONTAINERS, *TRIVY_CONTAINERS, + *REDIS_CONTAINERS, *RMT_CONTAINERS, *RUST_CONTAINERS, *GIT_CONTAINERS, diff --git a/src/bci_build/package/appcontainers.py b/src/bci_build/package/appcontainers.py index a48c16022..11f0d68d9 100644 --- a/src/bci_build/package/appcontainers.py +++ b/src/bci_build/package/appcontainers.py @@ -1,5 +1,6 @@ """Application Containers that are generated with the BCI tooling""" +import textwrap from pathlib import Path from bci_build.container_attributes import BuildType diff --git a/src/bci_build/package/redis.py b/src/bci_build/package/redis.py new file mode 100644 index 000000000..cedeb218d --- /dev/null +++ b/src/bci_build/package/redis.py @@ -0,0 +1,60 @@ +"""Redis Advanced Key-Value Store Container definitions""" + +import textwrap +from pathlib import Path + +from bci_build.container_attributes import BuildType +from bci_build.container_attributes import PackageType +from bci_build.container_attributes import SupportLevel +from bci_build.os_version import ALL_NONBASE_OS_VERSIONS +from bci_build.os_version import CAN_BE_LATEST_OS_VERSION +from bci_build.os_version import OsVersion +from bci_build.package import DOCKERFILE_RUN +from bci_build.package import ApplicationStackContainer +from bci_build.package import OsContainer +from bci_build.package import Package +from bci_build.package import ParseVersion +from bci_build.package import Replacement +from bci_build.package import _build_tag_prefix +from bci_build.package.helpers import generate_from_image_tag +from bci_build.package.helpers import generate_package_version_check +from bci_build.package.versions import format_version +from bci_build.package.versions import get_pkg_version + +REDIS_CONTAINERS = [ + ApplicationStackContainer( + name="redis", + pretty_name="Advanced Key-Value Store", + from_image=generate_from_image_tag(os_version, "bci-micro"), + os_version=os_version, + is_latest=os_version in CAN_BE_LATEST_OS_VERSION, + version="%%redis_version%%", + version_in_uid=False, + replacements_via_service=[ + Replacement( + regex_in_build_description="%%redis_version%%", + package_name="redis", + parse_version=ParseVersion.MINOR, + ) + ], + license="BSD-3-Clause", + package_list=[ + Package(name, pkg_type=PackageType.BOOTSTRAP) + for name in ( + "redis", + "util-linux", + ) + ], + config_sh_script=textwrap.dedent( + """ + chown redis:redis /var/lib/redis + """ + ), + entrypoint_user="redis", + cmd=["redis-server", "--protected-mode no", "--dir /var/lib/redis"], + volumes=["/var/lib/redis"], + exposes_ports=[6379], + build_recipe_type=BuildType.KIWI, + ) + for os_version in ALL_NONBASE_OS_VERSIONS +]