diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ac8fb67..b310cea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,4 +20,10 @@ jobs: - uses: vexxhost/docker-atmosphere/.github/actions/build-image@main with: image-name: python-base + build-args: FROM=ghcr.io/vexxhost/ubuntu-cloud-archive:main@sha256:de1f31c2017c1928ec9c8f5f22c00cc4779a4f303b1ca647072fcd12b5184d90 + push: ${{ github.event_name != 'pull_request' }} + - uses: vexxhost/docker-atmosphere/.github/actions/build-image@main + with: + image-name: debian-python-base + build-args: FROM=debian:trixie push: ${{ github.event_name != 'pull_request' }} diff --git a/Dockerfile b/Dockerfile index 0ec9301..9285fc2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,15 @@ # SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc. # SPDX-License-Identifier: GPL-3.0-or-later -FROM ghcr.io/vexxhost/ubuntu-cloud-archive:main@sha256:de1f31c2017c1928ec9c8f5f22c00cc4779a4f303b1ca647072fcd12b5184d90 +ARG FROM=ghcr.io/vexxhost/ubuntu-cloud-archive:main@sha256:de1f31c2017c1928ec9c8f5f22c00cc4779a4f303b1ca647072fcd12b5184d90 + +FROM ${FROM} AS bindep +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin +COPY bindep.txt /bindep.txt +RUN uvx bindep -b -f /bindep.txt -l newline > /packages.txt + +FROM ${FROM} ENV PATH=/var/lib/openstack/bin:$PATH -RUN \ - apt-get update -qq && \ - apt-get install -qq -y --no-install-recommends \ - ca-certificates \ - libpython3.12 \ - lsb-release \ - libpcre3 \ - python3-setuptools \ - sudo && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* +COPY install-packages /usr/local/bin/install-packages +COPY --from=bindep /packages.txt /packages.txt +RUN install-packages $(cat /packages.txt) diff --git a/bindep.txt b/bindep.txt new file mode 100644 index 0000000..bb2d8b8 --- /dev/null +++ b/bindep.txt @@ -0,0 +1,8 @@ +ca-certificates +libpcre2-8-0 [platform:debian] +libpcre3 [platform:ubuntu] +libpython3.12 [platform:ubuntu] +libpython3.13 [platform:debian] +lsb-release +python3-setuptools +sudo diff --git a/install-packages b/install-packages new file mode 100755 index 0000000..d3c287e --- /dev/null +++ b/install-packages @@ -0,0 +1,24 @@ +#!/bin/sh +# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc. +# SPDX-License-Identifier: GPL-3.0-or-later + +set -e + +if command -v apt-get >/dev/null; then + export DEBIAN_FRONTEND=noninteractive + apt-get update -qq + apt-get install -y --no-install-recommends "$@" + apt-get clean + rm -rf /var/lib/apt/lists/* +elif command -v dnf >/dev/null; then + dnf install -y --setopt=install_weak_deps=False "$@" + dnf clean all +elif command -v yum >/dev/null; then + yum install -y "$@" + yum clean all +elif command -v apk >/dev/null; then + apk add --no-cache "$@" +elif command -v zypper >/dev/null; then + zypper install -y --no-recommends "$@" + zypper clean -a +fi