이 문서는 #548에서 추가한 반복 가능한 로컬 개발 환경 구성·seed·인벤토리 실행 절차다.
대상은 local, dev 프로필뿐이며 운영 환경에 seed를 적용하거나 운영 컨테이너를 제어하는 용도가 아니다.
- PostgreSQL/PostGIS와 Redis를 같은 Compose 파일로 준비한다.
local프로필로 애플리케이션을 시작해 개발용 관리자와 예제 데이터를 seed한다.- API·테이블·배치 인벤토리와 부트스트랩 계약을 소스 기준으로 검증한다.
스크립트는 Docker, DB, Redis, 외부 API에 연결하지 않는 --verify를 기본 동작으로 둔다.
실제 컨테이너 기동은 --start-dependencies 또는 --run을 명시했을 때만 수행한다.
- JDK 21과 Docker Compose v2를 준비한다.
- 루트 디렉터리에서 명령을 실행한다.
- 기본 실행 프로필은
local이다.dev도 같은 seed·Compose 계약을 사용하지만, 보조 스크립트는 실수로 다른 환경을 선택하지 않도록local로 고정한다.
application-local.yaml, application-dev.yaml은 Docker Compose와 Swagger UI를 활성화한다.
Compose 파일은 postgres와 redis의 health check를 포함하므로, 애플리케이션을 실행하기 전에 두
의존성이 준비됐는지 기다릴 수 있다.
먼저 소스 기준 계약을 검증한다.
./scripts/bootstrap-local-development.sh --verify
# 또는
./gradlew verifyDevelopmentBootstrap의존성만 먼저 기동하려면 아래 명령을 사용한다.
./scripts/bootstrap-local-development.sh --start-dependencies애플리케이션까지 한 번에 실행하려면 아래 명령을 사용한다. 이 명령은 내부적으로
SPRING_PROFILES_ACTIVE=local ./gradlew bootRun을 실행한다.
./scripts/bootstrap-local-development.sh --runDevAdminSeedConfig는 local, dev 프로필에서만 등록된다. 기본값으로 관리자 1명과 관광객·사장님·장소·이미지·북마크 예제 데이터가 생성된다.
| 설정 | 역할 |
|---|---|
SEED_ADMIN_ENABLED |
개발용 관리자 생성 여부 |
SEED_DEV_DATA_ENABLED |
예제 사용자·장소·게시글·북마크 생성 여부 |
SEED_ADMIN_USERNAME, SEED_ADMIN_EMAIL, SEED_ADMIN_PASSWORD |
개발용 관리자 식별자와 비밀번호 |
SEED_DEV_USER_PASSWORD |
예제 일반 계정의 공통 비밀번호 |
개발 데이터 없이 애플리케이션만 확인할 때는 아래처럼 토글을 끈다.
SEED_ADMIN_ENABLED=false SEED_DEV_DATA_ENABLED=false \
./scripts/bootstrap-local-development.sh --runseed는 사용자 username/email, 장소 kakao place ID, 사용자-장소 게시글·북마크 존재 여부를 확인한 뒤 삽입하므로 같은 로컬 DB에서 재실행해도 같은 레코드를 중복 생성하지 않는다.
애플리케이션이 시작된 뒤에는 다음 최소 확인을 수행한다.
curl -fsS http://localhost:8080/actuator/health/liveness
curl -fsS http://localhost:8080/actuator/health/readiness
./gradlew collectDevelopmentBootstrapManifest
./gradlew verifyDevelopmentBootstrap- Swagger UI는
http://localhost:8080/swagger-ui에서 확인한다. - 생성 매니페스트는
build/inventory/development-bootstrap-manifest.md에 저장되며 Git에 커밋하지 않는다. - API 경로·Flyway·배치 실행 지점은
verifyDevelopmentBootstrap내부에서 기존verifyCurrentSystemInventory를 함께 실행해 확인한다. - 기본 비밀번호와 JWT secret은 로컬 전용 값이므로 로그, 이슈, 인벤토리 산출물에 기록하지 않는다.
의존성 컨테이너만 중지하려면 다음 명령을 사용한다. 기본 명령은 볼륨을 삭제하지 않으므로 로컬 DB 데이터는 유지된다.
./scripts/bootstrap-local-development.sh --stop-dependenciesCompose 기동, health check, 애플리케이션 시작 중 어느 단계에서 실패했는지는 해당 단계의 출력으로 구분한다.
소스 계약만 다시 점검할 때는 Docker를 재시작하지 말고 --verify를 실행한다.
로컬 데이터 자체를 초기화해야 할 때는 팀의 DB 운영 절차를 먼저 확인하고, 필요한 경우에만 Compose volume을 명시적으로 삭제한다. 이 Runbook과 자동화는 운영 DB, Redis, AWS S3, Postmark, FCM에 연결하거나 값을 변경하지 않는다.