feat: 로컬 개발환경 셋업 (Docker + 호스트) 검증 + 온보딩 문서 #2

Merged
art merged 1 commits from feat/local-dev-setup into main 2026-06-17 05:41:26 +00:00
Collaborator

요약

로컬 개발환경 셋업을 두 경로 모두 실제 실행으로 검증하고 온보딩 문서를 추가한다.

  • Path A (Docker): docker compose up --build → 홈 / 200 + DB 라운드트립(삽입→홈노출)으로 DB→MyBatis→JSP 전 구간 동작 확인.
  • Path B (호스트): ./mvnw -P dev test → 6 tests / 0 fail, spring-boot:run 홈 200(provided tomcat).
  • AC 5/5 PASS. src/·pom.xml 무수정.

변경

  • docs/usage/local-setup.md: 7섹션 온보딩(Docker/호스트, DB 스키마 초기화, 검증 체크리스트, 트러블슈팅, 미해결). usage/index.md 링크.
  • db/schema.sql: 6테이블 init DDL 복원. recruit_posts = 권위 DDL, 나머지 5테이블 = 매퍼+POJO 역추출 비권위본(타입 추론, 헤더 명시).
  • docker-compose.yml + Dockerfile: postgres:16 + JDK21 멀티스테이지. 비밀값은 .env(gitignore)/환경변수 주입(이미지·git 비포함).
  • .env.example / .dockerignore / certs/README.md 추가. .gitignore.env·CA 제외. mvnw 실행권한.

검증 중 발견·해결한 블로커

  1. 회사 TLS 인터셉션(Cloudflare Gateway CA) → SNAPSHOT 의존 PKIX path building failed. curl 200 ≠ JDK 신뢰(JDK 자체 cacerts). → Docker 빌드 스테이지 certs/*.crt 주입 + 호스트 keytool import(insecure 우회 없이 TLS 검증 유지).
  2. 비실행 WAR(no main manifest attribute) → starter-parent 미사용 pom → spring-boot:repackage 명시(+ -P dev 필수).
  3. 포트 5432 충돌.env DB_PORT 로 회피.

알려진 미해결

  • db/schema.sql 5테이블은 비권위 타입 — 운영 DB pg_dump 대조 필요.
  • spring-boot 3.5.14-SNAPSHOT 고정 결정 대기.

🤖 Generated with Claude Code

## 요약 로컬 개발환경 셋업을 **두 경로 모두 실제 실행으로 검증**하고 온보딩 문서를 추가한다. - **Path A (Docker)**: `docker compose up --build` → 홈 `/` 200 + DB 라운드트립(삽입→홈노출)으로 DB→MyBatis→JSP 전 구간 동작 확인. - **Path B (호스트)**: `./mvnw -P dev test` → 6 tests / 0 fail, `spring-boot:run` 홈 200(provided tomcat). - AC 5/5 PASS. `src/`·`pom.xml` 무수정. ## 변경 - `docs/usage/local-setup.md`: 7섹션 온보딩(Docker/호스트, DB 스키마 초기화, 검증 체크리스트, 트러블슈팅, 미해결). `usage/index.md` 링크. - `db/schema.sql`: 6테이블 init DDL 복원. `recruit_posts` = 권위 DDL, 나머지 5테이블 = 매퍼+POJO **역추출 비권위본**(타입 추론, 헤더 명시). - `docker-compose.yml` + `Dockerfile`: postgres:16 + JDK21 멀티스테이지. 비밀값은 `.env`(gitignore)/환경변수 주입(이미지·git 비포함). - `.env.example` / `.dockerignore` / `certs/README.md` 추가. `.gitignore` 에 `.env`·CA 제외. `mvnw` 실행권한. ## 검증 중 발견·해결한 블로커 1. **회사 TLS 인터셉션(Cloudflare Gateway CA)** → SNAPSHOT 의존 `PKIX path building failed`. `curl` 200 ≠ JDK 신뢰(JDK 자체 cacerts). → Docker 빌드 스테이지 `certs/*.crt` 주입 + 호스트 keytool import(insecure 우회 없이 TLS 검증 유지). 2. **비실행 WAR**(`no main manifest attribute`) → starter-parent 미사용 pom → `spring-boot:repackage` 명시(+ `-P dev` 필수). 3. **포트 5432 충돌** → `.env` `DB_PORT` 로 회피. ## 알려진 미해결 - `db/schema.sql` 5테이블은 비권위 타입 — 운영 DB `pg_dump` 대조 필요. - spring-boot 3.5.14-SNAPSHOT 고정 결정 대기. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
art added 1 commit 2026-06-17 03:29:40 +00:00
14f41c6531 feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서
두 경로를 실제 실행으로 검증하고 온보딩 문서를 추가한다.

- docs/usage/local-setup.md: 7섹션 온보딩 (Path A Docker / Path B 호스트,
  DB 스키마 초기화, 검증 체크리스트, 트러블슈팅, 미해결). usage/index 링크.
- db/schema.sql: 6테이블 init DDL 복원. recruit_posts 는 권위 DDL,
  나머지 5테이블은 매퍼+POJO 역추출 비권위본(타입 추론, 헤더에 명시).
- docker-compose.yml + Dockerfile: postgres:16 + JDK21 멀티스테이지 빌드.
  비밀값은 .env(gitignore)/환경변수 주입, 이미지·git 비포함.
  회사 TLS 인터셉션 프록시 대응으로 certs/*.crt 를 빌드 truststore 에 주입.
  starter-parent 미사용 pom 이라 spring-boot:repackage 명시(-P dev 필수).
- .env.example / .dockerignore / certs/README.md 추가, .gitignore 에 .env·certs CA 제외.
- mvnw 실행권한 부여.

검증: Path A 홈 200 + DB 라운드트립, Path B mvnw test 6/0/0 + spring-boot:run 200.
AC 5/5 PASS. src/·pom.xml 무수정.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
art merged commit 1fa1e12128 into main 2026-06-17 05:41:26 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: pandoli365/bibimbap#2
No description provided.