1단계: 진짜 마운트 위치 확인
지금 컨테이너에서 빠져나오신 뒤(exit), Windows 명령 프롬프트에서:
docker inspect pg16 --format "{{json .Mounts}}"
또는 좀 더 읽기 좋게:
docker inspect pg16
패턴 A — Named volume인 경우:
"Type": "volume",
"Name": "어떤긴이름_data",
"Source": "/var/lib/docker/volumes/어떤긴이름_data/_data",
"Destination": "/var/lib/postgresql/data"
패턴 B — Bind mount인 경우:
"Type": "bind",
"Source": "C:\\Users\\...\\어떤경로",
"Destination": "/var/lib/postgresql/data"
2단계: 출력 결과 공유
Mounts 섹션 내용을 그대로 붙여 주시면, 정확한 명령어를 만들어 드리겠습니다.
참고로, 지금 만들어진 빈 pg16 볼륨은 나중에 정리하시면 됩니다:
docker volume rm pg16
(단, 위 inspect 결과에서 진짜 데이터 볼륨 이름이 pg16이 아닌 걸 확인한 다음에요.)
디렉토리가 비어 있다는 건 pg16이라는 이름의 볼륨이 실제 데이터 볼륨이 아니라는 뜻입니다. 새 빈 볼륨이 만들어져서 마운트된 거예요.
실제 데이터가 어디 있는지부터 확인해야 합니다.
1단계: 진짜 마운트 위치 확인
지금 컨테이너에서 빠져나오신 뒤(exit), Windows 명령 프롬프트에서:
bash
docker inspect pg16 --format "{{json .Mounts}}"
또는 좀 더 읽기 좋게:
bash
docker inspect pg16
출력 중에서 "Mounts" 섹션을 찾아 주세요. 두 가지 패턴 중 하나일 겁니다.
패턴 A — Named volume인 경우:
json
"Type": "volume", "Name": "어떤긴이름_data", "Source": "/var/lib/docker/volumes/어떤긴이름_data/_data", "Destination": "/var/lib/postgresql/data"
→ Name 값을 그대로 써야 합니다 (pg16이 아니라).
패턴 B — Bind mount인 경우:
json
"Type": "bind", "Source": "C:\\Users\\...\\어떤경로", "Destination": "/var/lib/postgresql/data"
→ Source 경로를 써야 합니다.
2단계: 출력 결과 공유
Mounts 섹션 내용을 그대로 붙여 주시면, 정확한 명령어를 만들어 드리겠습니다.
참고로, 지금 만들어진 빈 pg16 볼륨은 나중에 정리하시면 됩니다:
bash
docker volume rm pg16
(단, 위 inspect 결과에서 진짜 데이터 볼륨 이름이 pg16이 아닌 걸 확인한 다음에요.)
경, 찾았습니다. 진짜 볼륨 이름은 그 긴 해시값입니다:
c8e4b1568757dd4fa0a5e0c452965d98b90f858181e60874f3b9869702770a5a
실행 명령어
Windows 명령 프롬프트에서 그대로 복사해서 실행하세요:
bash
docker run --rm -it -v c8e4b1568757dd4fa0a5e0c452965d98b90f858181e60874f3b9869702770a5a:/var/lib/postgresql/data postgres:16 bash
컨테이너 진입 후:
bash
cd /var/lib/postgresql/data ls
이번에는 postgresql.conf, pg_hba.conf, base/, global/ 같은 파일/디렉토리가 보일 겁니다. 보인다면:
bash
# 현재 값 확인 grep lc_time postgresql.conf # 수정 sed -i "s/ko_KR.uft8/ko_KR.utf8/g" postgresql.conf # 확인 grep lc_time postgresql.conf # 빠져나오기 exit
마무리
bash
docker start pg16 docker logs --tail 20 pg16
로그에 database system is ready to accept connections 가 뜨면 성공입니다. FATAL이 또 뜨면 그 메시지 그대로 공유해 주세요.
참고 — 아까 잘못 만든 빈 pg16 볼륨은 나중에 정리하시면 됩니다:
bash
docker volume rm pg16