WSL(Windows Subsystem for Linux) 환경의 Docker에서 PostgreSQL을 운영할 때, 윈도우 로컬 드라이브에 있는 데이터를 DB로 적재하려고 하면 발생하는 경로 오류 해결법을 공유합니다.
문제의 핵심: "독립된 파일시스템"
DBeaver에서 COPY 명령어나 프로시저를 실행할 때 C:\projects\... 같은 윈도우 경로를 입력하면, PostgreSQL은 파일을 찾을 수 없다는 에러를 내뱉습니다.
이유는 간단합니다. Docker 컨테이너는 자신만의 독립된 파일시스템을 가지고 있기 때문에, 별도의 연결 통로를 만들어주지 않으면 호스트(Windows)의 폴더를 전혀 볼 수 없기 때문입니다.
해결 방법: Docker 볼륨 마운트 (Volume Mount)
윈도우의 특정 폴더를 컨테이너 내부의 가상 경로로 연결해주는 '마운트' 작업이 필요합니다.
docker-compose.yml 파일을 사용하는 환경이라면 volumes 섹션에 아래 내용을 추가하고 재시작하면 됩니다.
1. docker-compose.yml 수정
volumes:
- /data/postgres/juso/pgdata:/var/lib/postgresql/data
- /wal/postgres/juso/pgwal:/var/lib/postgresql/wal
- /opt/postgres/juso/logs:/var/log/postgresql
- /opt/postgres/juso/config/postgresql.conf:/etc/postgresql/postgresql.conf:ro
# 이 부분 추가: 윈도우 주소데이터 다운로드 폴더 연결
- /mnt/d/projects/juso/download/202602_build_db_full_data:/juso/download/202602_build_db_full_data
- /mnt/d/projects/juso/download/202602_build_db_delta_data:/juso/download/202602_build_db_delta_data
- /mnt/d/projects/juso/download/202602_location_db_full_data:/juso/download/202602_location_db_full_data
- /mnt/d/projects/juso/download/202602_location_db_delta_data:/juso/download/202602_location_db_delta_data
2. docker 컨테이너 재시작
docker-compose down
docker-compose up -d
최종 확인 및 프로시저 수정
마운트가 정상적으로 되었다면, 이제 DB 쪽 설정을 바꿔줄 차례입니다.
1. 파일 목록 확인
DBeaver SQL 편집기에서 아래 쿼리를 실행하여 컨테이너가 파일을 제대로 인식하는지 체크합니다.
-- 컨테이너 내부 경로로 조회
SELECT * FROM pg_ls_dir('/juso/download');
2. 프로시저 내 경로 수정
프로시저 코드 안의 파일 경로를 Windows 경로가 아닌 컨테이너 내부 경로로 업데이트합니다.
-- [변경 전] Windows 기준 (작동 불가)
-- 'D:/projects/juso/download/...='
-- [변경 후] 컨테이너 기준 (작동 성공!)
-- '/juso/download/....'
※ 인코딩 에러(invalid byte sequence)가 함께 발생한다면, COPY 문 옵션에 ENCODING 'UHC' 또는 ENCODING 'UTF8'으로 설정값을 변경해보세요.
'운영체제(OS) > Docker' 카테고리의 다른 글
| postgresql18.3 로컬 주소DB 구축 (8) - pg_trgm, 인덱스 설정 (0) | 2026.04.08 |
|---|---|
| postgresql18.3 로컬 주소DB 구축 (7) - 위치정보 테이블 적재 (0) | 2026.04.08 |
| postgresql18.3 로컬 주소DB 구축 (5) - 도로명 주소 테이블 적재 (0) | 2026.04.02 |
| postgresql18.3 로컬 주소DB 구축 (4) - PostGIS 확장기능 설치 (0) | 2026.03.31 |
| postgresql18.3 로컬 주소DB 구축 (3) - 테이블 생성 (1) | 2026.03.31 |
댓글