From f8004bfe6534310d09a059b02d0cb297bb703ddf Mon Sep 17 00:00:00 2001 From: Raghuveer Kulkarni <147660422+RaghuveeRR07@users.noreply.github.com> Date: Fri, 29 Aug 2025 00:01:40 +0530 Subject: [PATCH 1/6] updated dockerfile for multiarch image support --- state-manager/Dockerfile | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/state-manager/Dockerfile b/state-manager/Dockerfile index 0f9cb814..51806d87 100644 --- a/state-manager/Dockerfile +++ b/state-manager/Dockerfile @@ -1,14 +1,34 @@ FROM python:3.12-slim-bookworm -COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ + +# Install curl for downloading uv +RUN apt-get update && apt-get install -y curl ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Download uv binary based on target architecture +ARG TARGETARCH +RUN case "$TARGETARCH" in \ + amd64) ARCH=x86_64 ;; \ + arm64) ARCH=aarch64 ;; \ + *) echo "Unsupported architecture: $TARGETARCH" && exit 1 ;; \ + esac && \ + curl -L "https://github.com/astral-sh/uv/releases/latest/download/uv-${ARCH}-unknown-linux-musl.tar.gz" \ + | tar -xz && \ + mv uv-${ARCH}-unknown-linux-musl/uv /usr/local/bin/ && \ + mv uv-${ARCH}-unknown-linux-musl/uvx /usr/local/bin/ && \ + rm -rf uv-${ARCH}-unknown-linux-musl WORKDIR /api-server +# Copy dependency files first (for caching) COPY pyproject.toml uv.lock ./ +# Install dependencies using uv RUN uv sync --locked +# Copy app source code COPY . . EXPOSE 8000 -CMD ["uv", "run", "run.py", "--mode", "production", "--workers", "4"] \ No newline at end of file +# Start the app +CMD ["uv", "run", "run.py", "--mode", "production", "--workers", "4"] From 7aeac5139b283fc8f9ed6a01cb03ef98463ed3c8 Mon Sep 17 00:00:00 2001 From: Raghuveer Kulkarni <147660422+RaghuveeRR07@users.noreply.github.com> Date: Tue, 2 Sep 2025 15:53:01 +0530 Subject: [PATCH 2/6] Updated dockerfile to support multiarch --- state-manager/Dockerfile | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/state-manager/Dockerfile b/state-manager/Dockerfile index 51806d87..7bbab514 100644 --- a/state-manager/Dockerfile +++ b/state-manager/Dockerfile @@ -1,34 +1,15 @@ FROM python:3.12-slim-bookworm -# Install curl for downloading uv -RUN apt-get update && apt-get install -y curl ca-certificates \ - && rm -rf /var/lib/apt/lists/* - -# Download uv binary based on target architecture -ARG TARGETARCH -RUN case "$TARGETARCH" in \ - amd64) ARCH=x86_64 ;; \ - arm64) ARCH=aarch64 ;; \ - *) echo "Unsupported architecture: $TARGETARCH" && exit 1 ;; \ - esac && \ - curl -L "https://github.com/astral-sh/uv/releases/latest/download/uv-${ARCH}-unknown-linux-musl.tar.gz" \ - | tar -xz && \ - mv uv-${ARCH}-unknown-linux-musl/uv /usr/local/bin/ && \ - mv uv-${ARCH}-unknown-linux-musl/uvx /usr/local/bin/ && \ - rm -rf uv-${ARCH}-unknown-linux-musl +RUN pip install --no-cache-dir uv==0.4.28 WORKDIR /api-server -# Copy dependency files first (for caching) COPY pyproject.toml uv.lock ./ -# Install dependencies using uv RUN uv sync --locked -# Copy app source code COPY . . EXPOSE 8000 -# Start the app -CMD ["uv", "run", "run.py", "--mode", "production", "--workers", "4"] +CMD ["uv", "run", "run.py", "--mode", "production", "--workers", "4"] \ No newline at end of file From ade17040f723072c9556f77d8ceb06489fc0f125 Mon Sep 17 00:00:00 2001 From: Raghuveer Kulkarni <147660422+RaghuveeRR07@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:16:01 +0530 Subject: [PATCH 3/6] updated dockerfile after implementing suggestions --- state-manager/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/state-manager/Dockerfile b/state-manager/Dockerfile index 7bbab514..ccb74a63 100644 --- a/state-manager/Dockerfile +++ b/state-manager/Dockerfile @@ -1,6 +1,9 @@ +FROM ghcr.io/astral-sh/uv:0.4.28 as uv + FROM python:3.12-slim-bookworm -RUN pip install --no-cache-dir uv==0.4.28 +COPY --from=uv /uv /usr/local/bin/uv +COPY --from=uv /uvx /usr/local/bin/uvx WORKDIR /api-server From 543eebce535a9260aded7ce0f1cad3dc04f48ba2 Mon Sep 17 00:00:00 2001 From: Raghuveer Kulkarni <147660422+RaghuveeRR07@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:22:40 +0530 Subject: [PATCH 4/6] updated dockerfile to use version ARG --- state-manager/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/state-manager/Dockerfile b/state-manager/Dockerfile index ccb74a63..c4ebc441 100644 --- a/state-manager/Dockerfile +++ b/state-manager/Dockerfile @@ -1,9 +1,9 @@ -FROM ghcr.io/astral-sh/uv:0.4.28 as uv +ARG UV_VERSION=0.4.28 +FROM ghcr.io/astral-sh/uv:${UV_VERSION} as uv FROM python:3.12-slim-bookworm COPY --from=uv /uv /usr/local/bin/uv -COPY --from=uv /uvx /usr/local/bin/uvx WORKDIR /api-server From 8d2935cc917101b08bc8b21d255ea5ebab4adc4c Mon Sep 17 00:00:00 2001 From: Raghuveer Kulkarni <147660422+RaghuveeRR07@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:39:05 +0530 Subject: [PATCH 5/6] updated dockerfile to use digest --- state-manager/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/state-manager/Dockerfile b/state-manager/Dockerfile index c4ebc441..5d6d5eb2 100644 --- a/state-manager/Dockerfile +++ b/state-manager/Dockerfile @@ -1,7 +1,7 @@ ARG UV_VERSION=0.4.28 -FROM ghcr.io/astral-sh/uv:${UV_VERSION} as uv +FROM ghcr.io/astral-sh/uv:${UV_VERSION}@sha256: AS uv -FROM python:3.12-slim-bookworm +FROM python:3.12-slim-bookworm@sha256: COPY --from=uv /uv /usr/local/bin/uv From c8226878946c4bc8d33bcb9c22cdacdddf6086ef Mon Sep 17 00:00:00 2001 From: Raghuveer Kulkarni <147660422+RaghuveeRR07@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:48:04 +0530 Subject: [PATCH 6/6] updated dockerfile to use manifest digest --- state-manager/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/state-manager/Dockerfile b/state-manager/Dockerfile index 5d6d5eb2..431071cd 100644 --- a/state-manager/Dockerfile +++ b/state-manager/Dockerfile @@ -1,7 +1,8 @@ ARG UV_VERSION=0.4.28 -FROM ghcr.io/astral-sh/uv:${UV_VERSION}@sha256: AS uv - -FROM python:3.12-slim-bookworm@sha256: +ARG UV_DIGEST=sha256:REPLACE_WITH_MANIFEST_DIGEST +FROM ghcr.io/astral-sh/uv:${UV_VERSION}@${UV_DIGEST} AS uv +ARG PYTHON_DIGEST=sha256:REPLACE_WITH_MANIFEST_DIGEST +FROM python:3.12-slim-bookworm@${PYTHON_DIGEST} COPY --from=uv /uv /usr/local/bin/uv