#!/usr/bin/env bash # 개발 이미지 빌드. 최초 20~40분, 이후 캐시가 대부분을 먹는다. set -euo pipefail . "$(dirname "${BASH_SOURCE[0]}")/_docker.sh" say "빌드 전 점검" # nvidia 런타임이 없으면 이미지는 빌드돼도 실행 시점에 GPU 를 못 본다. # 여기서 미리 알려 주는 편이 40분 뒤에 아는 것보다 낫다. if ! "${DOCKER[@]}" info 2>/dev/null | grep -qi 'nvidia'; then warn "docker 데몬에 nvidia 런타임이 안 보입니다." warn "SETUP.md 2단계(nvidia-container-toolkit)를 먼저 끝내세요. 빌드는 계속합니다." else ok "nvidia 런타임 등록됨" fi : "${NUSCENES_ROOT:?.env 에 NUSCENES_ROOT 가 없습니다}" if [[ -d "$NUSCENES_ROOT/v1.0-trainval" ]]; then ok "nuScenes 메타데이터 확인: $NUSCENES_ROOT/v1.0-trainval" else warn "$NUSCENES_ROOT/v1.0-trainval 이 안 보입니다 (NFS 응답이 느릴 수 있음)." fi AVAIL=$(df -BG --output=avail /var/lib/docker 2>/dev/null | tail -1 | tr -dc '0-9') if [[ -n "${AVAIL:-}" && "$AVAIL" -lt 30 ]]; then warn "/var/lib/docker 여유 공간 ${AVAIL}GB. 이미지가 12~16GB 이므로 부족할 수 있습니다." fi say "이미지 빌드: ${IMAGE_NAME:-vkgs-sim}:${IMAGE_TAG:-dev} (CUDA_ARCH=${CUDA_ARCH:-8.6})" export DOCKER_BUILDKIT=1 dc build "$@" dev ok "빌드 완료" echo " 다음: bash scripts/run.sh"