docker
This commit is contained in:
98
shp-exporter/DOCKER.md
Normal file
98
shp-exporter/DOCKER.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# 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`에서 해당 라인 제거
|
||||
Reference in New Issue
Block a user