본문 바로가기
운영체제(OS)/Docker

postgresql18.3 로컬 주소DB 구축 (6) - WSL Docker에서 윈도우 로컬 파일을 인식하지 못할 때 해결법 (볼륨 마운트)

by JLearn 2026. 4. 7.

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'으로 설정값을 변경해보세요.

댓글