From 09f29d9303902766212dedda1879f2ee49deb56b Mon Sep 17 00:00:00 2001 From: John Garbutt Date: Tue, 5 Nov 2024 17:16:09 +0000 Subject: [PATCH] Move to Ubuntu 24.04 (#23) * Move to Ubuntu 24.04 * Refactor the docker file for build/run stage * Skip arm for now * Fix up logging in the docker image --- .github/workflows/docker.yaml | 2 +- .github/workflows/tox.yaml | 2 +- Dockerfile | 54 +++++++++++++++++++++++++++++++---- README.rst | 2 +- 4 files changed, 51 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 34fcf65..c4a6818 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -38,7 +38,7 @@ jobs: with: cache-key: os-capacity context: . - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64 push: true tags: ${{ steps.image-meta.outputs.tags }} labels: ${{ steps.image-meta.outputs.labels }} diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 82bd824..ca9ec8c 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.10'] + python-version: ['3.12'] steps: - uses: actions/checkout@v4 diff --git a/Dockerfile b/Dockerfile index f556b44..c0f7d9b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,52 @@ -FROM ubuntu:22.04 +FROM ubuntu:24.04 AS build-image -RUN apt-get update && apt-get upgrade -y && apt-get install python3-pip tini -y && apt-get clean +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install python3-venv python3-dev gcc git -y && \ + rm -rf /var/lib/apt/lists/* -COPY ./requirements.txt /opt/os-capacity/requirements.txt -RUN pip install -U -r /opt/os-capacity/requirements.txt +# build into a venv we can copy across +RUN python3 -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" -COPY ./os_capacity/prometheus.py /opt/os-capacity/prometheus.py +COPY ./requirements.txt /os-capacity/requirements.txt +RUN pip install -U pip setuptools +RUN pip install --requirement /os-capacity/requirements.txt + +COPY . /os-capacity +RUN pip install -U /os-capacity + +# +# Now the image we run with +# +FROM ubuntu:24.04 AS run-image + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install --no-install-recommends python3 tini ca-certificates -y && \ + rm -rf /var/lib/apt/lists/* + +# Copy accross the venv +COPY --from=build-image /opt/venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" + +# Create the user that will be used to run the app +ENV APP_UID=1001 +ENV APP_GID=1001 +ENV APP_USER=app +ENV APP_GROUP=app +RUN groupadd --gid $APP_GID $APP_GROUP && \ + useradd \ + --no-create-home \ + --no-user-group \ + --gid $APP_GID \ + --shell /sbin/nologin \ + --uid $APP_UID \ + $APP_USER + +# Don't buffer stdout and stderr as it breaks realtime logging +ENV PYTHONUNBUFFERED=1 + +USER $APP_UID ENTRYPOINT ["tini", "--"] -CMD ["python3", "-u", "/opt/os-capacity/prometheus.py"] +CMD ["os_capacity"] diff --git a/README.rst b/README.rst index 48a56d6..632b4ed 100644 --- a/README.rst +++ b/README.rst @@ -46,7 +46,7 @@ Or just run via docker or similar::: docker run -d --name os_capacity \ --mount type=bind,source=/etc/kolla/os-capacity/,target=/etc/openstack \ --env OS_CLOUD=openstack --env OS_CLIENT_CONFIG_FILE=/etc/openstack/clouds.yaml \ - -p 9000:9000 ghcr.io/stackhpc/os-capacity:e08ecb8 + -p 9000:9000 ghcr.io/stackhpc/os-capacity:master curl localhost:9000