mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-07-26 22:19:49 +00:00
fix: optimize container build by enabling uv cache (#2855)
- Remove --no-cache flags from uv pip install commands to enable caching - Mount host uv cache directory to container for persistent caching - Set UV_LINK_MODE=copy to prevent uv using hardlinks - When building the starter image o Build time reduced from ~4:45 to ~3:05 on subsequent builds (environment specific) o Eliminates re-downloading of 3G+ of data on each build o Cache size: ~6.2G (when building starter image) Fixes excessive data downloads during distro container builds. Signed-off-by: Derek Higgins <derekh@redhat.com>
This commit is contained in:
parent
3b83032555
commit
340448e0aa
1 changed files with 14 additions and 6 deletions
|
@ -19,6 +19,9 @@ UV_HTTP_TIMEOUT=${UV_HTTP_TIMEOUT:-500}
|
||||||
# mounting is not supported by docker buildx, so we use COPY instead
|
# mounting is not supported by docker buildx, so we use COPY instead
|
||||||
USE_COPY_NOT_MOUNT=${USE_COPY_NOT_MOUNT:-}
|
USE_COPY_NOT_MOUNT=${USE_COPY_NOT_MOUNT:-}
|
||||||
|
|
||||||
|
# Mount command for cache container .cache, can be overridden by the user if needed
|
||||||
|
MOUNT_CACHE=${MOUNT_CACHE:-"--mount=type=cache,id=llama-stack-cache,target=/root/.cache"}
|
||||||
|
|
||||||
# Path to the run.yaml file in the container
|
# Path to the run.yaml file in the container
|
||||||
RUN_CONFIG_PATH=/app/run.yaml
|
RUN_CONFIG_PATH=/app/run.yaml
|
||||||
|
|
||||||
|
@ -125,11 +128,16 @@ RUN pip install uv
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Set the link mode to copy so that uv doesn't attempt to symlink to the cache directory
|
||||||
|
add_to_container << EOF
|
||||||
|
ENV UV_LINK_MODE=copy
|
||||||
|
EOF
|
||||||
|
|
||||||
# Add pip dependencies first since llama-stack is what will change most often
|
# Add pip dependencies first since llama-stack is what will change most often
|
||||||
# so we can reuse layers.
|
# so we can reuse layers.
|
||||||
if [ -n "$pip_dependencies" ]; then
|
if [ -n "$pip_dependencies" ]; then
|
||||||
add_to_container << EOF
|
add_to_container << EOF
|
||||||
RUN uv pip install --no-cache $pip_dependencies
|
RUN $MOUNT_CACHE uv pip install $pip_dependencies
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -137,7 +145,7 @@ if [ -n "$special_pip_deps" ]; then
|
||||||
IFS='#' read -ra parts <<<"$special_pip_deps"
|
IFS='#' read -ra parts <<<"$special_pip_deps"
|
||||||
for part in "${parts[@]}"; do
|
for part in "${parts[@]}"; do
|
||||||
add_to_container <<EOF
|
add_to_container <<EOF
|
||||||
RUN uv pip install --no-cache $part
|
RUN $MOUNT_CACHE uv pip install $part
|
||||||
EOF
|
EOF
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -207,7 +215,7 @@ COPY $dir $mount_point
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
add_to_container << EOF
|
add_to_container << EOF
|
||||||
RUN uv pip install --no-cache -e $mount_point
|
RUN $MOUNT_CACHE uv pip install -e $mount_point
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,10 +230,10 @@ else
|
||||||
if [ -n "$TEST_PYPI_VERSION" ]; then
|
if [ -n "$TEST_PYPI_VERSION" ]; then
|
||||||
# these packages are damaged in test-pypi, so install them first
|
# these packages are damaged in test-pypi, so install them first
|
||||||
add_to_container << EOF
|
add_to_container << EOF
|
||||||
RUN uv pip install fastapi libcst
|
RUN $MOUNT_CACHE uv pip install fastapi libcst
|
||||||
EOF
|
EOF
|
||||||
add_to_container << EOF
|
add_to_container << EOF
|
||||||
RUN uv pip install --no-cache --extra-index-url https://test.pypi.org/simple/ \
|
RUN $MOUNT_CACHE uv pip install --extra-index-url https://test.pypi.org/simple/ \
|
||||||
--index-strategy unsafe-best-match \
|
--index-strategy unsafe-best-match \
|
||||||
llama-stack==$TEST_PYPI_VERSION
|
llama-stack==$TEST_PYPI_VERSION
|
||||||
|
|
||||||
|
@ -237,7 +245,7 @@ EOF
|
||||||
SPEC_VERSION="llama-stack"
|
SPEC_VERSION="llama-stack"
|
||||||
fi
|
fi
|
||||||
add_to_container << EOF
|
add_to_container << EOF
|
||||||
RUN uv pip install --no-cache $SPEC_VERSION
|
RUN $MOUNT_CACHE uv pip install $SPEC_VERSION
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue