도커 컨테이너 기동시 리눅스 타임존 설정 및 postgres timezone 설정
postgres pgvector 도커 기동시 한글 설정
TZ: Asia/Seoul
: 컨테이너의 시스템 레벨 타임존을Asia/Seoul
로 설정합니다command: postgres -c "TimeZone=Asia/Seoul" -c "log_timezone=Asia/Seoul"
: PostgreSQL 서버 내부에서 사용하는TimeZone
설정을 직접Asia/Seoul
로 오버라이드합니다. 이는TZ
환경 변수와 별개로 PostgreSQL 자체의 설정을 변경하는 것이라 더 확실합니다.
LC_ALL
환경 변수는 리눅스 및 유닉스 계열 시스템에서 모든 LC_
로 시작하는 로케일 관련 환경 변수들을 한꺼번에 재정의하는 데 사용되는 특별한 환경 변수입니다.
LC_
변수들이란?
리눅스 시스템은 사용자의 언어, 날짜/시간 형식, 통화 형식, 숫자 형식, 정렬 순서 등을 정의하기 위해 여러 LC_
환경 변수를 사용합니다. 주요 LC_
변수들은 다음과 같습니다:
LC_CTYPE
: 문자 분류 및 변환 (예: 대소문자 변환, 문자열 인코딩)LC_NUMERIC
: 숫자 형식 (예: 소수점 구분 기호, 천 단위 구분 기호)LC_TIME
: 시간 및 날짜 형식 (예: 날짜 표시 순서, 요일 이름)LC_COLLATE
: 문자열 정렬 순서LC_MONETARY
: 통화 형식LC_MESSAGES
: 프로그램 메시지(오류 메시지, 프롬프트 등)의 언어LC_PAPER
: 종이 크기 형식LC_NAME
: 이름 형식LC_ADDRESS
: 주소 형식LC_TELEPHONE
: 전화번호 형식LC_MEASUREMENT
: 측정 단위LC_IDENTIFICATION
: 로케일 관련 일반 정보
그리고 가장 기본적인 LANG
변수도 있습니다.
LANG
:LC_
변수들이 개별적으로 설정되지 않았을 때, 모든LC_
변수의 기본값을 설정합니다.
LC_ALL
의 역할
LC_ALL
은 이 모든 LC_
변수들보다 가장 높은 우선순위를 가집니다.
- 재정의 기능: 만약
LC_ALL
이 설정되면,LANG
과 모든 개별LC_CTYPE
,LC_TIME
등등의 모든LC_
변수 설정을 무시하고LC_ALL
의 값으로 강제로 설정합니다. - 디버깅/강제 설정: 특정 환경에서 로케일 관련 문제를 진단하거나, 모든 로케일 설정을 일관되게 강제하고 싶을 때 유용하게 사용될 수 있습니다.
예시
-
LANG=en_US.utf8
만 설정:LC_CTYPE
,LC_TIME
등 개별LC_
변수가 설정되어 있지 않으면 모두en_US.utf8
를 따릅니다.
-
LANG=en_US.utf8
이고LC_TIME=ko_KR.utf8
인 경우:- 대부분은 영어 로케일을 따르지만, 시간 표시는 한국어 로케일을 따릅니다.
-
LC_ALL=ko_KR.utf8
인 경우 (다른 변수들이 어떻게 설정되어 있든):LANG
,LC_CTYPE
,LC_NUMERIC
,LC_TIME
등 모든 로케일 관련 설정이 강제로ko_KR.utf8
로 설정됩니다.
컨테이너 환경에서의 사용
Docker 컨테이너와 같이 격리된 환경에서 locale
을 확실하게 설정하고 싶을 때 LC_ALL
을 사용하는 경우가 있습니다. LANG
만으로는 충분하지 않거나, 특정 LC_
변수가 예기치 않게 다른 값으로 설정되어 문제를 일으킬 수 있는 경우 LC_ALL
을 사용해 모든 것을 한 번에 ko_KR.utf8
로 통일할 수 있습니다.
다만, 대부분의 경우 LANG=ko_KR.utf8
만으로도 충분하며, TZ
환경 변수로 타임존을 별도로 설정하는 것이 일반적입니다. LC_ALL
은 때때로 너무 강제적이라서 예상치 못한 부작용을 일으킬 수도 있으므로, 필요할 때만 사용하는 것이 좋습니다.
결론적으로, LC_ALL
은 "모든 로케일 설정을 한 번에, 그리고 가장 높은 우선순위로 지정하는 마스터 스위치"라고 이해하시면 됩니다.
댓글