diff --git a/docker/datahub-actions/Dockerfile b/docker/datahub-actions/Dockerfile index e37934140f35c..c76e7c00ed1d7 100644 --- a/docker/datahub-actions/Dockerfile +++ b/docker/datahub-actions/Dockerfile @@ -42,18 +42,21 @@ RUN existing_group=$(getent group 1000 | cut -d: -f1) && \ # Setup the PPA for alternative Python versions. # TODO: Eventually we should switch to using uv's support for python-build-standalone. -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ software-properties-common \ lsb-release \ gnupg \ ca-certificates \ - && add-apt-repository --no-update ppa:deadsnakes/ppa \ - && rm -rf /var/lib/apt/lists/* + && add-apt-repository --no-update ppa:deadsnakes/ppa ARG PYTHON_VERSION RUN test -n "${PYTHON_VERSION}" # PYTHON_VERSION must be set -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ python${PYTHON_VERSION} \ python${PYTHON_VERSION}-venv \ python${PYTHON_VERSION}-dev \ @@ -64,8 +67,7 @@ RUN apt-get update && apt-get install -y \ curl \ zip \ unzip \ - nano \ - && rm -rf /var/lib/apt/lists/* + nano # Set the default python version. RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \ @@ -93,7 +95,9 @@ ENV SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt" FROM python-base AS ingestion-base-slim USER 0 -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ python3-ldap \ libldap2-dev \ libsasl2-dev \ @@ -107,18 +111,18 @@ RUN apt-get update && apt-get install -y \ librdkafka-dev \ ldap-utils \ unixodbc \ - libodbc2 \ - && rm -rf /var/lib/apt/lists/* + libodbc2 USER datahub FROM ingestion-base-slim AS ingestion-base-full USER 0 # We need to install build-essential in order to build some Python packages (e.g. python-ldap) -RUN apt-get update && apt-get install --no-install-recommends -y -qq \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install --no-install-recommends -y -qq \ default-jre-headless \ - build-essential \ - && rm -rf /var/lib/apt/lists/* + build-essential RUN --mount=type=bind,source=./docker/snippets/oracle_instantclient.sh,target=/oracle_instantclient.sh \ /oracle_instantclient.sh diff --git a/docker/datahub-ingestion-base/Dockerfile b/docker/datahub-ingestion-base/Dockerfile index 7c60d94562603..69cb09ffc1ae5 100644 --- a/docker/datahub-ingestion-base/Dockerfile +++ b/docker/datahub-ingestion-base/Dockerfile @@ -41,18 +41,21 @@ RUN existing_group=$(getent group 1000 | cut -d: -f1) && \ # Setup the PPA for alternative Python versions. # TODO: Eventually we should switch to using uv's support for python-build-standalone. -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ software-properties-common \ lsb-release \ gnupg \ ca-certificates \ - && add-apt-repository --no-update ppa:deadsnakes/ppa \ - && rm -rf /var/lib/apt/lists/* + && add-apt-repository --no-update ppa:deadsnakes/ppa ARG PYTHON_VERSION RUN test -n "${PYTHON_VERSION}" # PYTHON_VERSION must be set -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ python${PYTHON_VERSION} \ python${PYTHON_VERSION}-venv \ python${PYTHON_VERSION}-dev \ @@ -63,8 +66,7 @@ RUN apt-get update && apt-get install -y \ curl \ zip \ unzip \ - nano \ - && rm -rf /var/lib/apt/lists/* + nano # Set the default python version. RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \ @@ -92,7 +94,9 @@ ENV SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt" FROM python-base AS ingestion-base-slim USER 0 -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ python3-ldap \ libldap2-dev \ libsasl2-dev \ @@ -106,18 +110,18 @@ RUN apt-get update && apt-get install -y \ librdkafka-dev \ ldap-utils \ unixodbc \ - libodbc2 \ - && rm -rf /var/lib/apt/lists/* + libodbc2 USER datahub FROM ingestion-base-slim AS ingestion-base-full USER 0 # We need to install build-essential in order to build some Python packages (e.g. python-ldap) -RUN apt-get update && apt-get install --no-install-recommends -y -qq \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install --no-install-recommends -y -qq \ default-jre-headless \ - build-essential \ - && rm -rf /var/lib/apt/lists/* + build-essential RUN --mount=type=bind,source=./docker/snippets/oracle_instantclient.sh,target=/oracle_instantclient.sh \ /oracle_instantclient.sh diff --git a/docker/datahub-ingestion/Dockerfile b/docker/datahub-ingestion/Dockerfile index 7f07ea5f2d21e..07bb3ee4b1861 100644 --- a/docker/datahub-ingestion/Dockerfile +++ b/docker/datahub-ingestion/Dockerfile @@ -42,18 +42,21 @@ RUN existing_group=$(getent group 1000 | cut -d: -f1) && \ # Setup the PPA for alternative Python versions. # TODO: Eventually we should switch to using uv's support for python-build-standalone. -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ software-properties-common \ lsb-release \ gnupg \ ca-certificates \ - && add-apt-repository --no-update ppa:deadsnakes/ppa \ - && rm -rf /var/lib/apt/lists/* + && add-apt-repository --no-update ppa:deadsnakes/ppa ARG PYTHON_VERSION RUN test -n "${PYTHON_VERSION}" # PYTHON_VERSION must be set -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ python${PYTHON_VERSION} \ python${PYTHON_VERSION}-venv \ python${PYTHON_VERSION}-dev \ @@ -64,8 +67,7 @@ RUN apt-get update && apt-get install -y \ curl \ zip \ unzip \ - nano \ - && rm -rf /var/lib/apt/lists/* + nano # Set the default python version. RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \ @@ -93,7 +95,9 @@ ENV SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt" FROM python-base AS ingestion-base-slim USER 0 -RUN apt-get update && apt-get install -y \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install -y \ python3-ldap \ libldap2-dev \ libsasl2-dev \ @@ -107,18 +111,18 @@ RUN apt-get update && apt-get install -y \ librdkafka-dev \ ldap-utils \ unixodbc \ - libodbc2 \ - && rm -rf /var/lib/apt/lists/* + libodbc2 USER datahub FROM ingestion-base-slim AS ingestion-base-full USER 0 # We need to install build-essential in order to build some Python packages (e.g. python-ldap) -RUN apt-get update && apt-get install --no-install-recommends -y -qq \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ + apt-get update && apt-get install --no-install-recommends -y -qq \ default-jre-headless \ - build-essential \ - && rm -rf /var/lib/apt/lists/* + build-essential RUN --mount=type=bind,source=./docker/snippets/oracle_instantclient.sh,target=/oracle_instantclient.sh \ /oracle_instantclient.sh