cli v0.8.0: 'yakcloud datasource migrate' — 블랙리스트(.migrateignore) 스냅샷 캡처/빈타깃 적용(부트스트랩). pg/mysql/mariadb/mongo/minio, 미리보기+제외검증+apply-skip+reset복원 docker E2E 검증. dev reset named볼륨 삭제 수정. 문서·/yakcloud 갱신

This commit is contained in:
2026-08-27 20:15:18 +09:00
parent a82de865f7
commit a498a402e6
6 changed files with 340 additions and 4 deletions

View File

@ -48,6 +48,20 @@ yakcloud dev status | logs | down [--volumes] | reset | doctor
- `.env.dev`·`.yakcloud/`·`docker-compose.yakcloud-dev.yml` 은 커밋 금지(스캐폴드 `.gitignore` 에 포함).
- env 계약은 프로덕션 백엔드 `_bind_env_for` 와 **바이트 동일**하게 유지(단일 진실원천).
## 스키마·데이터 마이그레이션(`yakcloud datasource migrate`) — 블랙리스트 스냅샷
개발 DB는 테스트로 엉망이 되기 쉬우니, **전부 캡처하되 블랙리스트로 뺀다**(denylist). 새 환경을 dev 상태로 채우는 **부트스트랩** 도구.
```sh
yakcloud datasource migrate capture [source…] --dry-run # 무엇이 잡히는지 미리보기(읽기전용)
yakcloud datasource migrate capture [source…] # db/<source>/snapshot/ 에 전체−블랙리스트 덤프
yakcloud datasource migrate apply [source…] # 빈 타깃만 복원(데이터 있으면 스킵, force 없음)
yakcloud datasource migrate status
```
- **블랙리스트**: `db/<source>/.migrateignore` (글롭, git 추적). 예: `audit_log_*`, `tmp_*`, `cache/*`. 민감/개인정보·쓰레기는 반드시 여기에.
- **capture=읽기전용**(안전), 전체 native 덤프(pg_dump/mysqldump/mongodump/mc mirror). 지원: postgres·mysql·mariadb·mongodb·minio(redis/solr/rabbitmq/oracle=다음 단계).
- **apply=빈 타깃만**. 데이터가 있으면 **절대 안 덮음**(스킵). 라이브 prod 지속 동기화가 아님.
- **db/** 는 커밋·리뷰 대상(`.env.dev`·`.yakcloud/` 와 반대로 gitignore 아님).
- prod 적용은 콘솔 종류별 소스관리자 **컨펌 + 항상 백업 후(롤백 보장)** — CLI 로 prod 직접 덮지 않음.
## 앱 코드 예시
```python
# Python — alias=db (postgres)