From 3108280ca9ce8d0af88fcace736dc362a43068d6 Mon Sep 17 00:00:00 2001 From: AkshataABhat Date: Tue, 15 Apr 2025 12:15:02 +0530 Subject: [PATCH 1/2] Dockerfile enhancement: mult-stage build --- Dockerfile | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index ff483b6484..73066f2056 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,8 @@ # * Install python3-venv for the built-in Python3 venv module (not installed by default). # * Install gcloud CLI from Google Cloud's apt repository. -FROM debian:12 +# Stage 1: Build +FROM debian:12 AS build # Install packages used by the Experiment. Python and Git are required for the experiment. # Curl, certs, and gnupg are required to install gcloud. RUN apt-get update && \ @@ -32,15 +33,13 @@ RUN apt-get update && \ wget2 \ clang-format && \ python3 -m venv /venv + # Install gcloud cli. RUN echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ apt-get update -y && \ apt-get install google-cloud-cli -y -# Set timezone to Australia/Sydney. -ENV TZ='Australia/Sydney' - - + # Install Docker for OSS-Fuzz. # Add Docker's official GPG key: RUN apt-get install ca-certificates curl gnupg && \ @@ -48,11 +47,13 @@ RUN apt-get install ca-certificates curl gnupg && \ curl -fsSL https://download.docker.com/linux/debian/gpg \ | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ chmod a+r /etc/apt/keyrings/docker.gpg + # Add the repository to Apt sources: RUN echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null + RUN apt-get update && \ apt-get install -y \ docker-ce \ @@ -61,8 +62,17 @@ RUN apt-get update && \ docker-buildx-plugin \ docker-compose-plugin - COPY . /experiment WORKDIR /experiment -RUN /venv/bin/pip install --disable-pip-version-check -r requirements.txt -ENTRYPOINT ["/venv/bin/python3", "./report/docker_run.py"] +RUN /venv/bin/pip install --disable-pip-version-check --default-timeout=100 -r requirements.txt + +# Stage 2: Runtime +FROM debian:12 +# Set timezone to Australia/Sydney. +ENV TZ='Australia/Sydney' + +COPY --from=build /venv /venv +COPY --from=build /experiment /experiment +WORKDIR /experiment + +ENTRYPOINT ["/venv/bin/python3", "./report/docker_run.py"] \ No newline at end of file From 123b997823fad4aba0e5bec0712d11430b30bd29 Mon Sep 17 00:00:00 2001 From: AkshataABhat Date: Mon, 21 Apr 2025 12:05:30 +0530 Subject: [PATCH 2/2] Dockerfile enhancement--fix to venv --- Dockerfile | 75 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/Dockerfile b/Dockerfile index 73066f2056..58594b787f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,10 +18,31 @@ # Stage 1: Build FROM debian:12 AS build + +RUN apt-get update && apt-get install --no-install-recommends -y \ + python3 \ + python3-venv \ + python3-pip && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +RUN python3 -m venv /venv + +COPY requirements.txt /tmp/ +RUN /venv/bin/pip install --disable-pip-version-check -r /tmp/requirements.txt && \ + rm -rf /root/.cache/pip + + +#Stage 2: Runtime +FROM debian:12 +# Set timezone to Australia/Sydney. + +ENV TZ='Australia/Sydney' +SHELL ["/bin/bash", "-c"] + # Install packages used by the Experiment. Python and Git are required for the experiment. # Curl, certs, and gnupg are required to install gcloud. -RUN apt-get update && \ - apt-get install --no-install-suggests --no-install-recommends --yes \ +RUN apt-get update && apt-get install --no-install-recommends -y \ + python3 \ python3-venv \ gcc \ libpython3-dev \ @@ -31,48 +52,40 @@ RUN apt-get update && \ gnupg \ curl \ wget2 \ - clang-format && \ - python3 -m venv /venv + clang-format \ + lsb-release && \ + apt-get clean && rm -rf /var/lib/apt/lists/* # Install gcloud cli. -RUN echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ +RUN install -m 0755 -d /etc/apt/keyrings && \ + curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /etc/apt/keyrings/cloud.google.gpg && \ + chmod a+r /etc/apt/keyrings/cloud.google.gpg && \ + echo "deb [signed-by=/etc/apt/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | \ + tee /etc/apt/sources.list.d/google-cloud-sdk.list && \ apt-get update -y && \ - apt-get install google-cloud-cli -y - + apt-get install --no-install-recommends -y google-cloud-cli && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + # Install Docker for OSS-Fuzz. # Add Docker's official GPG key: -RUN apt-get install ca-certificates curl gnupg && \ - install -m 0755 -d /etc/apt/keyrings && \ - curl -fsSL https://download.docker.com/linux/debian/gpg \ - | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ - chmod a+r /etc/apt/keyrings/docker.gpg - # Add the repository to Apt sources: -RUN echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null - -RUN apt-get update && \ - apt-get install -y \ +RUN install -m 0755 -d /etc/apt/keyrings && \ + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ + chmod a+r /etc/apt/keyrings/docker.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ - docker-compose-plugin + docker-compose-plugin && \ + apt-get clean && rm -rf /var/lib/apt/lists/* COPY . /experiment WORKDIR /experiment -RUN /venv/bin/pip install --disable-pip-version-check --default-timeout=100 -r requirements.txt - -# Stage 2: Runtime -FROM debian:12 -# Set timezone to Australia/Sydney. -ENV TZ='Australia/Sydney' COPY --from=build /venv /venv -COPY --from=build /experiment /experiment -WORKDIR /experiment -ENTRYPOINT ["/venv/bin/python3", "./report/docker_run.py"] \ No newline at end of file +ENTRYPOINT ["/venv/bin/python3", "./report/docker_run.py"]