bibimbap/certs
이정수 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>
2026-06-17 11:55:30 +09:00
..
README.md feat: 로컬 개발환경 셋업 (Docker + 호스트 직접) 검증 + 온보딩 문서 2026-06-17 11:55:30 +09:00

README.md

certs/ — 회사 TLS 인터셉션 프록시 CA (선택)

이 디렉토리는 TLS 를 가로채는 회사 프록시(예: Cloudflare Zero Trust/Gateway, Zscaler 등) 환경에서 Docker 빌드가 Maven 의존성을 받을 때 필요한 루트 CA 인증서를 둔다.

왜 필요한가

spring-boot 3.5.14-SNAPSHOT 빌드는 https://repo.spring.io/snapshot 에서 의존성을 받는다. 회사 프록시가 TLS 를 가로채면 호스트(macOS 키체인)는 프록시 CA 를 신뢰하지만, 빌드 컨테이너의 JDK truststore(cacerts)에는 그 CA 가 없어 다음 에러로 빌드가 깨진다:

PKIX path building failed: unable to find valid certification path to requested target
Non-resolvable import POM: org.springframework.boot:spring-boot-dependencies:pom:3.5.14-SNAPSHOT

Dockerfile 빌드 스테이지는 이 디렉토리의 *.crt / *.pem 을 컨테이너 cacerts 로 주입한다. 파일이 없으면(프록시 없는 환경) 그냥 건너뛴다.

추출 방법 (macOS)

현재 호스트가 보는 프록시 CA 를 그대로 추출:

# 1) 어떤 CA 가 인터셉트하는지 확인
echo | openssl s_client -connect repo.spring.io:443 -servername repo.spring.io 2>/dev/null \
  | openssl x509 -noout -issuer

# 2) 그 CA 를 키체인에서 PEM 으로 추출 (issuer CN 일부를 -c 에 사용)
security find-certificate -a -c "Gateway CA - Cloudflare Managed" -p \
  ~/Library/Keychains/login.keychain-db /Library/Keychains/System.keychain \
  > certs/corporate-proxy-ca.crt

추출한 *.crt 는 환경특화 정보라 git 추적하지 않는다(.gitignore 처리됨).

프록시가 없는 환경

이 디렉토리를 비워두면 된다. Docker 빌드는 CA 주입 단계를 건너뛰고 정상 진행한다.