즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

써드파티 도구/Docker

Docker로 PostgreSQL 구동 시 한글이 나오게 하는 방법

다물칸 2024. 6. 18. 16:01
728x90
반응형

영문으로 설치해도 데이터베이스에 기본적으로 UTF8로 설치되기에 한글이 Insert/Update는 되는데, 로그 및 날짜포맷등이 en-US로 설치되기에 한국 설정에 맞지 않게 표시가 된다. 

 

한글이 나오게 하려면 별도로 언어팩을 설치해야 하기 때문에 공식 이미지를 기반으로 별도 빌드해서 사용할 필요가 있다. 

 

다음은 빌드 스크립트이다. 

 

FROM postgres:16

# Locale 설정에 필요한 패키지 설치
RUN apt-get update && apt-get install -y locales openssh-client

# ko_KR.UTF-8 locale 생성
RUN locale-gen ko_KR.UTF-8

# ko_KR.UTF-8 locale 생성
RUN localedef -i ko_KR -f UTF-8 ko_KR.UTF-8

# 환경 변수 설정
ENV LANG=ko_KR.UTF-8
ENV LC_ALL=ko_KR.UTF-8
ENV TZ Asia/Seoul

# init-user-db.sh 스크립트 복사
#COPY backupdb.sh /opt/
COPY init-database.sh /docker-entrypoint-initdb.d/

# 스크립트에 실행 권한 부여
RUN chmod +x /docker-entrypoint-initdb.d/init-database.sh
RUN chown postgres:postgres /docker-entrypoint-initdb.d/init-database.sh
#RUN chmod +x /opt/backupdb.sh
#RUN cjpwm postgres:postgres /opt/backupdb.sh

# PostgreSQL 데이터 디렉토리 초기화
RUN mkdir -p /var/lib/postgresql/data
RUN chown -R postgres:postgres /var/lib/postgresql

# gosu 설치
RUN apt-get install -y gosu

# initdb 명령을 postgres 사용자로 실행
RUN gosu postgres /usr/lib/postgresql/16/bin/initdb -D /var/lib/postgresql/data


VOLUME /var/lib/postgresql/data

EXPOSE 5432

CMD ["postgres"]

 

init-database.sql은 인스턴스 설치 후 별도 사용자 생성이나 테이블 구성이라던가를 넣어주면 된다. 

 

빌드 방법은 아래.. 인데 하기전에 docker hub에 로그인을 해야 한다. private은 5개까지 무료이고, 나머지는 모두 공개해야 한다. Docker Registry를 통해 로컬 Repogitory를 만들어서 우회할 수 있었는데 지금은 막혔을라나?? 

 

docker build -t enjoydev/pg-database16:1.0 .
docker push enjoydev/pg-database16:1.0
반응형