[Trouble Shooting] MySQL 컨테이너 한글 인코딩 해결
문제 상황
아래와 같이 도커로 기동한 mysql 컨테이너에 한글이 깨져 ???
으로 저장된다.
문제 원인
도커 컨테이너의 한글 인코딩 설정이 안되어있어 발생하는 문제였다.
docker-compose.yml
에서 아래와 같이 설정했지만, Client characterset
과 Conn. characterset
은 도커 컴포즈에서 설정할 수 없다고 한다ㅜ
해결 방법
시도 1
원래는 이 글과 이 글을 참고하여 프로젝트 안에서 my.cnf
파일을 생성한 뒤 docker-compose.yml
을 통해 mysql 컨테이너에 마운트 하려 했었다.
하지만 의도와는 다르게 my.cnf
라는 이름의 “빈 디렉토리” 가 생성되었다.
시도 2 - 해결
mysql 컨테이너 안에 vim 설치 후 my.cnf 직접 생성한 뒤 볼륨 마운트하여 해결했다!
우선 mysql 컨테이너 내부에 접속해서 아래 명령어들을 실행한다.
OS 확인
cat /etc/*-release
컨테이너에 vim 설치
vim을 설치하기 위해 yum
, dnf
, apt-get
등의 커맨드를 시도해보았지만 모두 command not found
를 뿜었다..
이 글을 참고하여 redhat ootpa는 microdnf
패키지 매니저를 사용한다는 사실을 알았다.
$ microdnf install vim
my.cnf 파일 생성 및 내용 작성
# mysql 컨테이너 접속
docker exec -it my_mysql /bin/bash
# mysql 설정파일 생성
vim etc/mysql/conf.d/my.cnf
아래처럼 내용 작성
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
secure-file-priv = ""
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
docker-compose 볼륨 마운트
프로젝트의 docker.compose.yml
파일에 볼륨 마운트를 한다.
version: '3'
services:
database:
container_name: my_mysql
image: mysql
volumes:
- ./db/conf.d:/etc/mysql/conf.d # ✅
...
변경 확인
컨테이너 재기동 후 확인해보자!
변경 전
변경 후
이제 한글이 깨지지 않고 잘 보인다!
💛 개인 공부 기록용 블로그입니다. 👻