1717# OPTIONS
1818# ==============================================================================
1919#
20- # --tag TAG Docker image tag (required)
20+ # --tag TAG Docker image tag (required, repeatable )
2121# --platform PLAT Target platforms (default: linux/amd64,linux/arm64)
2222# --os-name NAME Base OS name (default: ubuntu)
2323# --os-version VER Base OS version (default: 22.04)
@@ -132,7 +132,7 @@ PLATFORMS="linux/amd64,linux/arm64"
132132OS_NAME=" ubuntu"
133133OS_VERSION=" 22.04"
134134CUDA_VERSION=" 12.4.1"
135- TAG= " "
135+ TAGS=()
136136PUSH=false
137137LOAD=false
138138NO_CACHE=false
@@ -174,7 +174,7 @@ show_help() {
174174while [[ $# -gt 0 ]]; do
175175 case $1 in
176176 --tag)
177- TAG= " $2 "
177+ TAGS+=( " $2 " )
178178 shift 2
179179 ;;
180180 --platform)
@@ -220,10 +220,11 @@ while [[ $# -gt 0 ]]; do
220220done
221221
222222# Validate required arguments
223- if [[ -z " $TAG " ]]; then
223+ if [[ ${ # TAGS[@]} -eq 0 ]]; then
224224 log_error " Docker image tag is required. Use --tag to specify."
225225 exit 1
226226fi
227+ TAG=" ${TAGS[0]} "
227228
228229# Check for Dockerfile
229230if [[ ! -f " $PROJECT_ROOT /Dockerfile" ]]; then
@@ -250,44 +251,42 @@ if [[ "$LOAD" == "true" && "$PLATFORMS" == *","* ]]; then
250251fi
251252
252253# Build the command
253- BUILD_CMD=" docker buildx build"
254-
255- # Add platform
256- BUILD_CMD=" $BUILD_CMD --platform $PLATFORMS "
257-
258- # Add build args
259- BUILD_CMD=" $BUILD_CMD --build-arg OS_NAME=$OS_NAME "
260- BUILD_CMD=" $BUILD_CMD --build-arg OS_VERSION=$OS_VERSION "
261- BUILD_CMD=" $BUILD_CMD --build-arg CUDA_VERSION=$CUDA_VERSION "
262-
263- # Add tag
264- BUILD_CMD=" $BUILD_CMD -t $TAG "
254+ BUILD_CMD=(
255+ docker buildx build
256+ --platform " $PLATFORMS "
257+ --build-arg " OS_NAME=$OS_NAME "
258+ --build-arg " OS_VERSION=$OS_VERSION "
259+ --build-arg " CUDA_VERSION=$CUDA_VERSION "
260+ )
261+
262+ for tag in " ${TAGS[@]} " ; do
263+ BUILD_CMD+=(--tag " $tag " )
264+ done
265265
266- # Add Dockerfile
267- BUILD_CMD=" $BUILD_CMD -f $PROJECT_ROOT /Dockerfile"
266+ BUILD_CMD+=(-f " $PROJECT_ROOT /Dockerfile" )
268267
269268# Add optional flags
270269if [[ " $PUSH " == " true" ]]; then
271- BUILD_CMD= " $BUILD_CMD --push"
270+ BUILD_CMD+=( --push)
272271fi
273272
274273if [[ " $LOAD " == " true" ]]; then
275- BUILD_CMD= " $BUILD_CMD --load"
274+ BUILD_CMD+=( --load)
276275fi
277276
278277if [[ " $NO_CACHE " == " true" ]]; then
279- BUILD_CMD= " $BUILD_CMD --no-cache"
278+ BUILD_CMD+=( --no-cache)
280279fi
281280
282281# Add context
283- BUILD_CMD= " $BUILD_CMD $ PROJECT_ROOT"
282+ BUILD_CMD+=( " $ PROJECT_ROOT" )
284283
285284# Print build information
286285echo " "
287286log_info " ========================================"
288287log_info " GPUd Docker Build"
289288log_info " ========================================"
290- log_info " Tag : $TAG "
289+ log_info " Tags : ${TAGS[*]} "
291290log_info " Platforms: $PLATFORMS "
292291log_info " OS: $OS_NAME $OS_VERSION "
293292log_info " CUDA Version: $CUDA_VERSION "
@@ -300,11 +299,11 @@ echo ""
300299
301300log_step " Building Docker image..."
302301echo " "
303- log_info " Command: $BUILD_CMD "
302+ log_info " Command: ${ BUILD_CMD[*]} "
304303echo " "
305304
306305# Execute build
307- eval " $ BUILD_CMD"
306+ " ${ BUILD_CMD[@]} "
308307
309308BUILD_STATUS=$?
310309
0 commit comments