32 lines
2.0 KiB
YAML
32 lines
2.0 KiB
YAML
# =============================================================================
|
|
# 로컬 dev 전용 오버라이드 — `docker compose` 가 docker-compose.yml 과 자동 병합한다.
|
|
# 목적: app 을 "WAR 굽기" 대신 소스 bind-mount + `mvn spring-boot:run` 으로 띄워
|
|
# 코드/JSP 변경을 이미지 재빌드 없이 반영(로컬 빠른 루프).
|
|
#
|
|
# 배포 이미지는 이 파일과 무관(별도 경로). 배포/운영 빌드는 base 만 명시 사용:
|
|
# docker compose -f docker-compose.yml up -d --build app # Dockerfile WAR 굽기
|
|
# (override 자동병합을 피하려고 `-f docker-compose.yml` 로 base 만 지정한다.)
|
|
#
|
|
# 반영 방법(로컬, 이미지 재빌드 0):
|
|
# - JSP/정적: 저장 즉시 반영(Jasper 가 마운트된 webapp 에서 재컴파일). 재시작 불필요.
|
|
# - Java 코드: `docker compose restart app` (spring-boot:run 재기동 ~1~2s)
|
|
# 또는 `docker compose exec app mvn -o -P dev -DskipTests compile` 후 restart.
|
|
# 전제: 호스트 ~/.m2 에 의존성이 캐시돼 있어야 offline(-o) 으로 뜬다(기존 빌드 이력으로 충족).
|
|
#
|
|
# 참고: devtools 자동재시작은 도입하지 않음 — 컨테이너 spring-boot:run 에는 소스 자동
|
|
# 재컴파일러가 없어(IDE 부재) 이득이 미미하고, SNAPSHOT devtools 의 offline 해소가
|
|
# 불안정해 restart/exec-compile 루프가 더 견고하다.
|
|
# =============================================================================
|
|
|
|
services:
|
|
app:
|
|
image: maven:3.9-eclipse-temurin-21
|
|
# base 의 build(Dockerfile WAR 굽기)를 로컬에선 사용하지 않는다.
|
|
build: !reset null
|
|
working_dir: /build
|
|
# offline: 프록시 CA 우회 + 재현성. 새 의존성 추가 시에만 일시적으로 -o 제거 후 1회 온라인.
|
|
command: ["mvn", "-o", "-P", "dev", "-DskipTests", "spring-boot:run"]
|
|
volumes:
|
|
- .:/build # 소스 bind-mount (코드/JSP 즉시 공유)
|
|
- ${HOME}/.m2:/root/.m2 # 호스트 의존성 캐시 재사용(offline 가능)
|