글 작성 당시의 테스트 환경이 Window 11 이라는 점 유의하시기 바랍니다!
FROM ghcr.io/osgeo/gdal:ubuntu-small-latest
# 한글도 읽기/쓰기가 가능토록 함
ENV LANG=C.UTF-8
# Timezone 을 우리나라에 맞춤
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# 더 필요한 게 있으면 아래 추가 작성.
# RUN apt update && apt-get install -y --no-install-recommends postgresql-client
ENV LANG=C.UTF-8
은 로케일이 설정을 위한 겁니다.ENV LC_ALL=C.UTF-8
로도 설정이 가능한데, 이와 관련된docker build -t gdal .
# 일단 실행하고...
docker run --name gdal -v '<host 경로>:<container 경로>' -itd gdal;
# container 내부에서 bash 로 접속 및 사용
docker exec -it gdal bash;
# --rm 을 통해서 한번 명령어 실행 후, 곧바로 종료 및 컨테이너 제거 시키는 방법.
docker run --rm -v '<host 경로>:<container 경로>' gdal gdalinfo --version;
사용방법 (1) ~ (2) 중 아무거나 선택하고,
gdal
이 잘 동작하면
이 글을 다 읽은 거나 마찬가지여서 글을 더 읽을 필요는 없습니다.다만 위의 각 단계에 대해서 더 디테일한 내용이 필요하거나,
간단한 테스트도 해보고 싶으신 분들만 이어서 아래 목차를 보시면 됩니다.
https://github.com/OSGeo/gdal/blob/master/docker/README.md
에 접속하면 공식 gdal 이지미를 여러가지 형태로 제공합니다.
(링크를 걸어뒀으니 각 이미지의 특징이 궁금하면 클릭하세요)
저는 ubuntu 24:04
OS 기반의
ghcr.io/osgeo/gdal:ubuntu-small-latest
이미지를 기반으로 Dockerfile 을
작성하고, build 하여 사용해보겠습니다.
Dockerfile
FROM ghcr.io/osgeo/gdal:ubuntu-small-latest
# 이렇게 환경설정을 해줘야 한글이 정상적으로 읽히고 써집니다.
ENV LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8
# Timezone 을 우리나라에 맞춤
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# 더 필요한 게 있으면 아래 추가 작성.
## 저는 psql 을 추가 설치했습니다. 필수 아닙니다!
RUN apt update && apt-get install -y --no-install-recommends postgresql-client
docker build & run
docker build -t gdal .
docker run --name gdal -v 'C:\Users\dailyCode\bind_dir:/bind_dir' -itd gdal;
container 내부로 들어가기
docker exec -it gdal bash;
(참고) 설치된 psql 테스트
# 저는 host pc 에 설치된 db 에 접근할 예정이므로 아래처럼 간단하게 테스트...
psql -h host.docker.internal -p 5432 -U postgres
참고: 도커는 컨테이너에서 외부 Host pc 에 접근하기 위해
host.docker.internal
라고 하는 특별한 도메인을 제공합니다. (참고)
테스트를 위해서 연속지적도-서울
데이터를 다운로드 받습니다 (회원가입 필요).
다운로드 받은 zip
파일을 docker run
명령어에서 -v
옵션으로
바인딩한 디렉토리에 넣습니다.
이후에 docker container
내부에서 다음과 같은 명령어를 입력해서
압축을 해제합니다.
# 참고로 gdal 이미지에 unzip 명령어가 이미 있습니다! 바로 사용 가능!
unzip LSMD_CONT_LDREG_서울.zip
이제 준비가 모두 끝났습니다.
지금부터 shapefile 을 저의 Host PC
에 설치된
Postgresql Database
에 업로드해보겠습니다.
cd /bind_dir
ogr2ogr -overwrite -progress --config PG_USE_COPY YES -f PostgreSQL \
"PG:host=host.docker.internal port=5432 user=postgres password=root dbname=postgres schemas=public" \
./LSMD_CONT_LDREG_11_202402.shp \
-lco GEOMETRY_NAME=geom -nlt MULTIPOLYGON \
--config SHAPE_ENCODING "EUC-KR" \
-nln LSMD_CONT_LDREG_11
위 그림처럼 업로드가 완료되고 나서 psql 을 통해서 테이블이 정상적으로
생성됐는지 확인해봅니다.
1. 테이블 존재여부
2. 테이블 상세 정보 (컬럼명, 인덱스 등)
3. 한글 인코딩 깨짐 Check
이상으로 gdal 공식 이미지 사용법이였습니다. 글을 마치겠습니다.
읽어주셔서 감사합니다.
참고: gdal.jar 를 통해서 java 내에서 gdal api 를 사용하실 분들은
ghcr.io/osgeo/gdal:ubuntu-full-latest 을 사용해보시기 바랍니다.
해당 이미지를 build 하는 데 사용한 Dockerfile 은 이 링크를 참조해주세요.