#!/bin/bash
set -e # 오류 발생 시 즉시 종료
echo "🚀 1. 운영체제 확인 및 기본 도구 설치"
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
else
OS=$(uname -s)
fi
if [[ "$OS" == "ubuntu" || "$OS" == "debian" ]]; then
echo "🔍 Ubuntu/Debian 기반 OS 감지됨"
apt-get update
apt-get install -y git curl wget unzip vim nano
apt-get clean
rm -rf /var/lib/apt/lists/*
else
echo "❌ 지원되지 않는 운영체제입니다: $OS"
exit 1
fi
echo "✅ 기본 도구 설치 완료"
echo "🚀 2. Node.js 및 npm 설치"
NODE_VERSION=20
curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash -
apt-get install -y nodejs
echo "🚀 3. NestJS CLI 설치"
npm install -g @nestjs/cli
echo "🚀 4. NestJS 프로젝트 확인 및 자동 생성"
PROJECT_DIR="/usr/src/app"
PROJECT_NAME="nest_project"
# 프로젝트 디렉토리 생성 및 이동
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
# 프로젝트 디렉토리 존재 여부 확인, package.json이 없으면 새 프로젝트 생성
if [ ! -d "$PROJECT_DIR" ] || [ ! -f "$PROJECT_DIR/package.json" ]; then
echo "⚠️ NestJS 프로젝트가 없습니다. 새로 생성합니다..."
nest new "$PROJECT_NAME" --package-manager npm --skip-git
# 생성된 프로젝트 폴더 내 파일을 현재 디렉토리로 이동
mv "$PROJECT_NAME"/* .
rm -rf "$PROJECT_NAME"
else
echo "✅ 기존 프로젝트가 존재합니다."
fi
echo "🚀 5. .env 파일 생성 (기존 파일 유지)"
if [ ! -f .env ]; then
echo "DATABASE_URL=postgresql://my_user:my_password@localhost:5432/my_database" > .env
echo "API_KEY=your_api_key" >> .env
echo "API_ENDPOINT=https://api.example.com" >> .env
echo "PORT=3000" >> .env
echo "NODE_ENV=development" >> .env
echo "✅ .env 파일 생성 완료"
else
echo "⚠️ .env 파일이 이미 존재합니다. 기존 값을 유지합니다."
fi
echo "🚀 6. 프로젝트 패키지 설치"
npm install
echo "✅ 모든 설치 완료! 컨테이너 내부에서 개발을 진행하세요!"
우분투 도커 이미지를 사용하여 컨테이너를 만들고 그 안에서 해당 셸 스크립트를 실행한다.