@@ -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]"
876856
877857show_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]}
907872fi
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