Skip to content

Commit 111e08c

Browse files
authored
refactor: simplify, remove --dev-image option from build.sh (#4867)
Signed-off-by: Keiven Chang <[email protected]> Co-authored-by: Keiven Chang <[email protected]>
1 parent f8bb53c commit 111e08c

File tree

2 files changed

+22
-86
lines changed

2 files changed

+22
-86
lines changed

container/README.md

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -161,23 +161,6 @@ The `build.sh` script is responsible for building Docker images for different AI
161161
./build.sh --build-arg CUSTOM_ARG=value
162162
```
163163

164-
### build.sh --dev-image - Local Development Image Builder
165-
166-
The `build.sh --dev-image` option takes a dev image and then builds a local-dev image, which contains proper local user permissions. It also includes extra developer utilities (debugging tools, text editors, system monitors, etc.).
167-
168-
**Common Usage Examples:**
169-
170-
```bash
171-
# Build local-dev image from dev image dynamo:latest-vllm
172-
./build.sh --dev-image dynamo:latest-vllm --framework vllm
173-
174-
# Build with custom tag from dev image dynamo:latest-vllm
175-
./build.sh --dev-image dynamo:latest-vllm --framework vllm --tag my-local:dev
176-
177-
# Dry run to see what would be built
178-
./build.sh --dev-image dynamo:latest-vllm --framework vllm --dry-run
179-
```
180-
181164
### Building the Frontend Image
182165

183166
The frontend image is a specialized container that includes the Dynamo components (NATS, etcd, dynamo, NIXL, etc) along with the Endpoint Picker (EPP) for Kubernetes Gateway API Inference Extension integration. This image is primarily used for inference gateway deployments.

container/build.sh

Lines changed: 22 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ get_options() {
199199
fi
200200
;;
201201
--base-image)
202-
# Note: --base-image cannot be used with --dev-image
203202
if [ "$2" ]; then
204203
BASE_IMAGE=$2
205204
shift
@@ -223,14 +222,6 @@ get_options() {
223222
missing_requirement "$1"
224223
fi
225224
;;
226-
--dev-image)
227-
if [ "$2" ]; then
228-
DEV_IMAGE_INPUT=$2
229-
shift
230-
else
231-
missing_requirement "$1"
232-
fi
233-
;;
234225
--uid)
235226
if [ "$2" ]; then
236227
CUSTOM_UID=$2
@@ -353,20 +344,10 @@ get_options() {
353344
shift
354345
done
355346

356-
# Validate argument combinations
357-
if [[ -n "${DEV_IMAGE_INPUT:-}" && -n "${BASE_IMAGE:-}" ]]; then
358-
error "ERROR: --dev-image cannot be used with --base-image. Use --dev-image to build from existing images or --base-image to build new images."
359-
fi
360-
361-
# Validate that --target and --dev-image cannot be used together
362-
if [[ -n "${DEV_IMAGE_INPUT:-}" && -n "${TARGET:-}" ]]; then
363-
error "ERROR: --target cannot be used with --dev-image. Use --target to build from scratch or --dev-image to build from existing images."
364-
fi
365-
366-
# Validate that --uid and --gid are only used with local-dev related options
347+
# Validate that --uid and --gid are only used with local-dev target
367348
if [[ -n "${CUSTOM_UID:-}" || -n "${CUSTOM_GID:-}" ]]; then
368-
if [[ -z "${DEV_IMAGE_INPUT:-}" && "${TARGET:-}" != "local-dev" ]]; then
369-
error "ERROR: --uid and --gid can only be used with --dev-image or --target local-dev"
349+
if [[ "${TARGET:-}" != "local-dev" ]]; then
350+
error "ERROR: --uid and --gid can only be used with --target local-dev"
370351
fi
371352
fi
372353

@@ -468,9 +449,8 @@ show_help() {
468449
echo " [--cache-from cache location to start from]"
469450
echo " [--cache-to location where to cache the build output]"
470451
echo " [--tag tag for image]"
471-
echo " [--dev-image dev image to build local-dev from]"
472-
echo " [--uid user ID for local-dev images (only with --dev-image or --target local-dev)]"
473-
echo " [--gid group ID for local-dev images (only with --dev-image or --target local-dev)]"
452+
echo " [--uid user ID for local-dev images (only with --target local-dev)]"
453+
echo " [--gid group ID for local-dev images (only with --target local-dev)]"
474454
echo " [--no-cache disable docker build cache]"
475455
echo " [--dry-run print docker commands without running]"
476456
echo " [--build-context name=path to add build context]"
@@ -876,54 +856,27 @@ fi
876856

877857
show_image_options
878858

879-
if [ -z "$RUN_PREFIX" ]; then
880-
set -x
881-
fi
882-
883-
884-
# Skip Build 1 and Build 2 if DEV_IMAGE_INPUT is set (we'll handle it at the bottom)
885-
if [[ -z "${DEV_IMAGE_INPUT:-}" ]]; then
886-
# Create build log directory for BuildKit reports
887-
BUILD_LOG_DIR="${BUILD_CONTEXT}/build-logs"
888-
mkdir -p "${BUILD_LOG_DIR}"
889-
SINGLE_BUILD_LOG="${BUILD_LOG_DIR}/single-stage-build.log"
890-
891-
# Use BuildKit for enhanced metadata
892-
if [ -z "$RUN_PREFIX" ]; then
893-
if docker buildx version &>/dev/null; then
894-
docker buildx build --progress=plain --load -f $DOCKERFILE $TARGET_STR $PLATFORM $BUILD_ARGS $CACHE_FROM $CACHE_TO $TAG $LATEST_TAG $BUILD_CONTEXT_ARG $BUILD_CONTEXT $NO_CACHE 2>&1 | tee "${SINGLE_BUILD_LOG}"
895-
BUILD_EXIT_CODE=${PIPESTATUS[0]}
896-
else
897-
DOCKER_BUILDKIT=1 docker build --progress=plain -f $DOCKERFILE $TARGET_STR $PLATFORM $BUILD_ARGS $CACHE_FROM $CACHE_TO $TAG $LATEST_TAG $BUILD_CONTEXT_ARG $BUILD_CONTEXT $NO_CACHE 2>&1 | tee "${SINGLE_BUILD_LOG}"
898-
BUILD_EXIT_CODE=${PIPESTATUS[0]}
899-
fi
859+
# Always build the main image first
860+
# Create build log directory for BuildKit reports
861+
BUILD_LOG_DIR="${BUILD_CONTEXT}/build-logs"
862+
mkdir -p "${BUILD_LOG_DIR}"
863+
SINGLE_BUILD_LOG="${BUILD_LOG_DIR}/single-stage-build.log"
900864

901-
if [ ${BUILD_EXIT_CODE} -ne 0 ]; then
902-
exit ${BUILD_EXIT_CODE}
903-
fi
904-
else
905-
$RUN_PREFIX docker build -f $DOCKERFILE $TARGET_STR $PLATFORM $BUILD_ARGS $CACHE_FROM $CACHE_TO $TAG $LATEST_TAG $BUILD_CONTEXT_ARG $BUILD_CONTEXT $NO_CACHE
906-
fi
865+
# Use BuildKit for enhanced metadata
866+
if docker buildx version &>/dev/null; then
867+
$RUN_PREFIX docker buildx build --progress=plain --load -f $DOCKERFILE $TARGET_STR $PLATFORM $BUILD_ARGS $CACHE_FROM $CACHE_TO $TAG $LATEST_TAG $BUILD_CONTEXT_ARG $BUILD_CONTEXT $NO_CACHE 2>&1 | tee "${SINGLE_BUILD_LOG}"
868+
BUILD_EXIT_CODE=${PIPESTATUS[0]}
869+
else
870+
$RUN_PREFIX DOCKER_BUILDKIT=1 docker build --progress=plain -f $DOCKERFILE $TARGET_STR $PLATFORM $BUILD_ARGS $CACHE_FROM $CACHE_TO $TAG $LATEST_TAG $BUILD_CONTEXT_ARG $BUILD_CONTEXT $NO_CACHE 2>&1 | tee "${SINGLE_BUILD_LOG}"
871+
BUILD_EXIT_CODE=${PIPESTATUS[0]}
907872
fi
908873

909-
# Handle --dev-image option (build local-dev from existing dev image)
910-
if [[ -n "${DEV_IMAGE_INPUT:-}" ]]; then
911-
# Validate that the dev image is not already a local-dev image
912-
if [[ "$DEV_IMAGE_INPUT" == *"-local-dev" ]]; then
913-
echo "ERROR: Cannot use local-dev image as dev image input: '$DEV_IMAGE_INPUT'"
914-
exit 1
915-
fi
916-
917-
# Build tag arguments - always add -local-dev suffix for --dev-image
918-
# Generate local-dev tag from input image
919-
if [[ "$DEV_IMAGE_INPUT" == *:* ]]; then
920-
LOCAL_DEV_TAG="--tag ${DEV_IMAGE_INPUT}-local-dev"
921-
else
922-
LOCAL_DEV_TAG="--tag ${DEV_IMAGE_INPUT}:latest-local-dev"
923-
fi
874+
if [ ${BUILD_EXIT_CODE} -ne 0 ]; then
875+
exit ${BUILD_EXIT_CODE}
876+
fi
924877

925-
build_local_dev_with_header "$DEV_IMAGE_INPUT" "$LOCAL_DEV_TAG" "Successfully built local-dev image: ${LOCAL_DEV_TAG#--tag }" "Building Local-Dev Image"
926-
elif [[ "${LOCAL_DEV_BUILD:-}" == "true" ]]; then
878+
# Handle local-dev target
879+
if [[ "${LOCAL_DEV_BUILD:-}" == "true" ]]; then
927880
# Use the first tag name (TAG) if available, otherwise use latest
928881
if [[ -n "$TAG" ]]; then
929882
DEV_IMAGE=$(echo "$TAG" | sed 's/--tag //' | sed 's/-local-dev$//')

0 commit comments

Comments
 (0)