두 경로를 실제 실행으로 검증하고 온보딩 문서를 추가한다. - 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> |
||
|---|---|---|
| .. | ||
| README.md | ||
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 주입 단계를 건너뛰고 정상 진행한다.