- Java 25
- Node.js
- pnpm
- MySQL
macOS에서 Homebrew를 사용하는 경우:
brew install mysql
brew services start mysql이미 설치되어 있다면 실행만 하면 됩니다.
brew services start mysql터미널에서 MySQL에 접속합니다.
mysql -u root비밀번호가 있는 경우:
mysql -u root -pMySQL 콘솔에 들어간 뒤 team8 데이터베이스를 생성합니다.
CREATE DATABASE team8 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit;이미 team8 데이터베이스가 있고 로컬 DB를 초기화하고 싶다면 아래 명령을 사용합니다.
DROP DATABASE IF EXISTS team8;
CREATE DATABASE team8 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;백엔드를 MySQL 운영 프로필로 실행합니다.
cd backend
DB_URL='jdbc:mysql://localhost:3306/team8?serverTimezone=Asia/Seoul&characterEncoding=UTF-8' \
DB_USERNAME='root' \
DB_PASSWORD='' \
SPRING_PROFILES_ACTIVE=prod \
./gradlew bootRunMySQL root 계정에 비밀번호가 있다면 DB_PASSWORD 값을 본인 비밀번호로 바꿔야 합니다.
DB_PASSWORD='내비밀번호'참고 사항:
- 처음 실행할 때 Flyway가 자동으로 테이블을 생성합니다.
prod프로필에서는 Hibernate가 테이블을 직접 만들지 않고, 스키마가 엔티티와 맞는지만 검증합니다.prod프로필에서는 샘플 데이터가 자동으로 들어가지 않습니다.- 그래서 처음에는 상품 목록이 비어 있을 수 있습니다. 이 상태는 정상입니다.
MySQL 없이 개발용 H2 DB로 실행하고 싶다면 기본 dev 프로필로 실행하면 됩니다.
cd backend
./gradlew bootRundev 프로필에서는 H2를 사용하고 샘플 데이터가 자동으로 들어갑니다.
백엔드 터미널은 그대로 켜둔 상태에서 새 터미널을 열고 실행합니다.
cd frontend
pnpm install
pnpm dev브라우저 접속 주소:
http://localhost:3000
백엔드 API 주소:
http://localhost:8080
Swagger 주소:
http://localhost:8080/swagger-ui/index.html
Flyway 마이그레이션이 정상 적용되었는지 확인하려면 아래 명령을 실행합니다.
mysql -h 127.0.0.1 -P 3306 -u root team8 -e "SHOW TABLES; SELECT version, description, success FROM flyway_schema_history;"정상이라면 아래 테이블들이 보여야 합니다.
flyway_schema_history
order_item
orders
product
Flyway 이력은 아래처럼 보여야 합니다.
1 init schema 1
mysql: command not found가 나오는 경우 MySQL이 설치되어 있지 않거나 PATH에 잡히지 않은 상태입니다.
brew install mysqlMySQL이 실행 중이 아닌 경우:
brew services start mysql이미 실행 중이면 아래처럼 나올 수 있습니다. 이 경우 정상입니다.
Service `mysql` already started
8080 포트가 이미 사용 중인 경우 기존 백엔드를 종료하거나 다른 포트로 실행합니다.
./gradlew bootRun --args='--server.port=8081'Flyway가 실패했거나 로컬 DB를 다시 깨끗하게 만들고 싶은 경우, 로컬 team8 DB만 초기화합니다.
mysql -u root -e "DROP DATABASE IF EXISTS team8; CREATE DATABASE team8 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"그 다음 백엔드를 다시 SPRING_PROFILES_ACTIVE=prod로 실행하면 됩니다.