|-- docker
|-- mysql
| |-- mysql.Dockerfile
| |-- initdb.sql
| |-- utf8.cnf
|-- mysql_secret
|-- docker-compose.yml
mysql.Dockerfile
FROM mysql:8
COPY utf8.cnf /etc/mysql/conf.d/
COPY initdb.sql /docker-entrypoint-initdb.d/
/etc/mysql/conf.d/
에 .cnf 설정 파일을 넣어주면 해당 내용을 바탕으로 mysql 설정이 초기화 된다.docker-entrypoint-initdb.d
디렉토리에 원하는 .sql 파일을 넣어주면 초기 실행시 sql파일이 실행된다.initdb.sql
CREATE DATABASE IF NOT EXISTS local_bookstore
utf8.cnf
[client]
default-character-set = utf8
[mysqld]
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
utf8
대신 utf8mb4
을 사용하라는 경고 메세지가 뜨고, 어떻게 한글이 되는지 모르고 일단 동작하는 것에 만족하고 더 알아보지 않은 코드이다.mysql_secret
passwordhere
docker-compose.yml
version: "3.7"
services:
db_mysql:
build:
context: ./mysql
dockerfile: ./mysql.Dockerfile
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_secret
MYSQL_USER: local_bookstore
MYSQL_PASSWORD_FILE: /run/secrets/mysql_secret
MYSQL_DATABASE: local_bookstore
secrets:
- mysql_secret
ports:
- "3306:3306"
volumes:
- "mysql_data:/var/lib/mysql"
secrets:
mysql_secret:
file: mysql_secret
volumes:
mysql_data:
mysql_secret
과 mysql_data
는 원하는 이름으로 지정해도 된다.
감사합니다