99 lines
2.6 KiB
Markdown
99 lines
2.6 KiB
Markdown
# Docker 빌드 및 실행 가이드
|
|
|
|
## 추가된 파일
|
|
|
|
| 파일 | 설명 |
|
|
|------|------|
|
|
| `Dockerfile` | 멀티스테이지 빌드 정의 |
|
|
| `.dockerignore` | Docker 빌드 컨텍스트 제외 목록 |
|
|
|
|
---
|
|
|
|
## Dockerfile 구조
|
|
|
|
### Stage 1 — Builder (`eclipse-temurin:21-jdk-jammy`)
|
|
|
|
1. Gradle wrapper 및 `build.gradle` 복사 → 의존성 레이어 캐싱
|
|
2. 소스 코드 복사 후 `./gradlew clean bootJar -x test` 실행
|
|
3. 출력: `build/libs/shp-exporter-v2.jar`
|
|
|
|
### Stage 2 — Runtime (`eclipse-temurin:21-jre-jammy`)
|
|
|
|
- JDK 없이 JRE만 포함 → 이미지 크기 최소화
|
|
- 출력 디렉토리 `/data/model_output/export` 사전 생성
|
|
- JVM 옵션 포함 (`-Xmx4g`, G1GC 튜닝 등)
|
|
|
|
---
|
|
|
|
## 빌드
|
|
|
|
```bash
|
|
docker build -t shp-exporter .
|
|
```
|
|
|
|
---
|
|
|
|
## 실행
|
|
|
|
### Spring Batch 모드 (권장)
|
|
|
|
```bash
|
|
docker run --rm \
|
|
-v /data/model_output/export:/data/model_output/export \
|
|
-e GEOSERVER_USERNAME=admin \
|
|
-e GEOSERVER_PASSWORD=geoserver \
|
|
shp-exporter \
|
|
--batch \
|
|
--converter.batch-ids[0]=252
|
|
```
|
|
|
|
### GeoServer 등록 포함
|
|
|
|
```bash
|
|
docker run --rm \
|
|
-v /data/model_output/export:/data/model_output/export \
|
|
-e GEOSERVER_USERNAME=admin \
|
|
-e GEOSERVER_PASSWORD=geoserver \
|
|
shp-exporter \
|
|
--batch \
|
|
--geoserver.enabled=true \
|
|
--converter.inference-id=D5E46F60FC40B1A8BE0CD1F3547AA6 \
|
|
--converter.batch-ids[0]=252 \
|
|
--converter.batch-ids[1]=253
|
|
```
|
|
|
|
### Shapefile 업로드 모드
|
|
|
|
```bash
|
|
docker run --rm \
|
|
-v /data/model_output/export:/data/model_output/export \
|
|
-e GEOSERVER_USERNAME=admin \
|
|
-e GEOSERVER_PASSWORD=geoserver \
|
|
shp-exporter \
|
|
--upload-shp /data/model_output/export/path/to/file.shp \
|
|
--layer layer_name
|
|
```
|
|
|
|
### DB 주소 오버라이드
|
|
|
|
`application-prod.yml`의 DB 호스트(`kamco-cd-postgis`)가 네트워크 환경과 다를 경우:
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--network your-network \
|
|
-v /data/model_output/export:/data/model_output/export \
|
|
shp-exporter \
|
|
--batch \
|
|
--spring.datasource.url=jdbc:postgresql://HOST:5432/kamco_cds \
|
|
--converter.batch-ids[0]=252
|
|
```
|
|
|
|
---
|
|
|
|
## 주의사항
|
|
|
|
- **볼륨 마운트 필수**: 출력 파일(`/data/model_output/export`)은 호스트 볼륨으로 마운트하지 않으면 컨테이너 종료 시 소실됨
|
|
- **네트워크**: DB 호스트명 `kamco-cd-postgis`가 컨테이너에서 resolve되어야 함 (`--network` 또는 `--add-host` 활용)
|
|
- **GeoServer 크리덴셜**: `GEOSERVER_USERNAME` / `GEOSERVER_PASSWORD` 환경변수로 주입 (`application-prod.yml`에 하드코딩된 값은 덮어씌워짐)
|
|
- **`.dockerignore`는 `.gitignore`에 등록**되어 있어 git에 커밋되지 않음 — 필요 시 `.gitignore`에서 해당 라인 제거
|