한글 정렬이 안되는 문제를 해결하려고 했으나…(feat. KioSchool) - 2025.04.26(토) 에 이어지는 글입니다.
이전에도 한글 정렬이 제대로 안되는 문제는 알고 있었고, 그 이유도 알아낸 상황이었다.
데이터베이스의 collate가 ko_kr.utf-8로 설정되어있지 않아서였지만… 우리는 docker 컨테이너를 사용하여 db를 띄우고 있었고, 이 컨테이너 내부에 해당 locale이 존재하지 않아서 문제가 되었던… 그런 문제였다.
저번에는 축제 기간 전이라 서버에 함부로 무언가를 적용하기 어려운 상황이었으나, 이제 축제가 끝났어서 한 번 해결해보기 위해서 도전해봤다!
이전에는 docker-compose.yml 파일만 사용하여 모든 서비스를 다 띄웠었는데, 이렇게 하면 내가 원하는 컨테이너 내부에서 다른 작업을 하기에는 어려움이 있었다. 그래서 아래와 같이 dockerfile을 만들고 docker-compose에서 사용하게끔 수정했다.
DatabaseDockerfile
FROM postgres:latest
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/*
RUN echo "ko_KR.UTF-8 UTF-8" >> /etc/locale.gen && \\
locale-gen ko_KR.UTF-8
ENV LANG ko_KR.UTF8
ENV LC_ALL ko_KR.UTF8
docker-compose.yml
# ~~~
db:
image: postgres:latest
container_name: kioschool-database
build:
context: .
dockerfile: ./DatabaseDockerfile
environment:
POSTGRES_USER: ${DATABASE_USERNAME}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
POSTGRES_DB: kio-school-database
PG_INITDB_ARGS: "--encoding=UTF8 --locale=ko_KR.UTF8 --lc-collate=ko_KR.UTF8 --lc-ctype=ko_KR.UTF8"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- database-network
compose 파일에서는 dockerfile 이미지를 이용하여 빌드를 하고, dockerfile 에서는 우리가 필요한 locale을 다운로드 받게끔 설정했다.
또한 postgresql 실행시 기본적으로 ko_KR.utf-8 locale을 사용하게끔 파라매터도 넘겨주어서 컨테이너 상에 locale이 없어서 실패하는 경우는 해결했다!
근데 오랜만에 배포하다 보니깐 nginx쪽 ssl 설정하는 법을 까먹어서 letsencrypt 요청을 너무 많이 보내서 2일동안 서버가 내려갔었다… 하하
그래서 급하게 만든 fallback 페이지랄까… 하하
암튼 다시 복구해서 지금은 한글 정렬도 잘 되는 키오스쿨이 되었습니다!! (구현한거에 비해서 영향이 너무 컸던…)