#!/usr/bin/env bash # kr_lp_pgnet 컨테이너 재생성 (--shm-size 8g 적용 등) # # 호스트에서 실행: # bash scripts/recreate_container.sh # # 동작: # 1. /root/.netrc 백업 (wandb 인증 보존) # 2. 기존 컨테이너 강제 삭제 # 3. 새 컨테이너 시작 (--shm-size 8g, --gpus all, bind mount) # 4. .netrc 복원 # 5. setup_server.sh 자동 실행 (paddle 등 재설치) set -euo pipefail NAME=kr_lp_pgnet IMAGE=ubuntu:24.04 SHM=8g WORKSPACE=/home/cuuva/workspace # 1. .netrc 백업 (wandb 로그인 보존용) NETRC_BAK=/tmp/${NAME}_netrc.bak if docker exec "$NAME" test -f /root/.netrc 2>/dev/null; then docker cp "$NAME":/root/.netrc "$NETRC_BAK" echo " ✓ /root/.netrc backed up → $NETRC_BAK" fi # 2. 기존 컨테이너 강제 정리 docker rm -f "$NAME" 2>/dev/null || true # 3. 새 컨테이너 (--shm-size 8g 핵심) docker run -d --name "$NAME" --gpus all \ --shm-size="$SHM" \ -v "$WORKSPACE:/workspace" \ -w /workspace \ --restart unless-stopped \ "$IMAGE" sleep infinity echo " ✓ 새 컨테이너 시작 (shm-size=$SHM)" # 4. .netrc 복원 if [ -f "$NETRC_BAK" ]; then docker cp "$NETRC_BAK" "$NAME":/root/.netrc rm "$NETRC_BAK" echo " ✓ /root/.netrc 복원 (wandb login 유지)" fi # 5. setup_server.sh 자동 실행 (paddle/PaddleOCR/cuDNN 등 재설치) echo echo " → setup_server.sh 실행..." docker exec "$NAME" bash /workspace/kr_lp_pgnet/scripts/setup_server.sh