본문 바로가기
[서버]/[SpringBoot Kotlin]

Docker Mysql

by Hevton 2023. 4. 11.
반응형

 

docker hub에서 mysql 설치

docker pull mysql

 

 

mysql 컨테이너 생성

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=비밀번호 -d mysql

 

mysql 컨테이너에서 접속

docker exec -it mysql-container mysql -u root -p

 

 

mysql 컨테이너와 api-server 컨테이너 연결

 

docker network생성

docker network create my-network

 

mysql 컨테이너 실행

docker run --name mysql-container --network my-network -e MYSQL_ROOT_PASSWORD=비밀번호 -d mysql

 

api-server 컨테이너 실행

docker run --name api-container --network my-network -p 8000:8000 -d api-image

 

api-server에서 커넥트할땐 host를 mysql컨테이너의 이름으로 설정하면 된다.

 

 

이런식으로 mysql 설정파일을 마운트해준다.

-v /path/to/my.cnf:/etc/mysql/my.cnf

 

api-server와 mysql을 연결하거나

api-server와 nginx를 연결할 때 모두 host로 container 명을 사용하면 된다.

 

 


 

Docker Mysql 한글 안 깨지는 방법

 

 

데이터베이스 생성 시

CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

테이블 생성 시

CREATE TABLE table_name (content VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci);

 

 

mysql 설정파일 생성 (/home/my.cnf)

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

 

도커 컨테이너 실행 시

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=비밀번호 -v /home/my.cnf:/etc/mysql/my.cnf -d --network my-network mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

호스트의 /home/my.cnf  를 container의 /etc/mysql/my.cnf 로 마운트

 

반응형