요약
Mac M1 환경에서 Docker Compose 를 이용하여 MySQL 8.0.28 데이터베이스 서버를 구축합니다.
폴더 구조 생성
프로젝트 루트 경로에 mysql/sqls
폴더를 생성합니다.
프로젝트 루트 경로에 docker-compose.yaml
파일을 생성합니다.
mysql
폴더 경로에 my.cnf
, Dockerfile
파일을 생성합니다.
mysql/sqls
폴더 경로에 init.sql
파일을 생성합니다.
Dockerfile 파일 정의
M1 칩을 고려하여 linux/amd64
로 플랫폼을 설정합니다.
mysql 이미지를 불러오며 버전은 8.0.28를 사용합니다.
mysql 컨테이너에 로컬에 있는 my.cnf 파일을 복사하여 붙여넣습니다.
FROM --platform=linux/amd64 mysql:8.0.28
ADD ./my.cnf /etc/mysql/conf.d/my.cnf
my.cnf 파일 정의
UTF-8
로 mysql 서버 설정을 변경하여 한글을 지원할 수 있도록 합니다.
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
docker-compose.yaml 파일 정의
version
는 docker schema 버전을 명시합니다.
services
는 service를 정의합니다.
mysql
는 services 중 하나인 service 입니다. 이는 하나의 도커 컨테이너를 의미합니다.
build
는 Docker 파일을 빌드하는 경로를 뜻합니다.
restart
는 restart 옵션을 선택하는 부분입니다. unless-stopped
는 명시적으로 중지되거나, Docker 자체가 중지되는 경우 재시작한다는 옵션입니다.
container_name
는 컨테이너 이름을 뜻합니다.
ports
는 "로컬호스트":"도커컨테이너포트"를 의미합니다.
volumes
는 로컬위치:컨테이너위치
형식으로 사용되고, mysql data를 로컬에 저장하며,docker-entrypoint-initdb.d
로 init.sql
를 복사하여 컨테이너 내부에 데이터베이스와 테이블을 생성합니다.
environment
는 해당 컨테이너의 환경 변수를 의미합니다.
version: '3'
services:
mysql:
build: ./mysql
restart: unless-stopped
container_name: reminder-mysql
ports:
- "3306:3306"
volumes:
- ./mysql/mysql_data:/var/lib/mysql
- ./mysql/sqls:/docker-entrypoint-initdb.d/
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: testDB
init.sql 파일 정의
도커 컨테이너가 실행될 때 수행할 SQL 쿼리문을 작성하는 파일입니다.
DROP DATABASE IF EXISTS testDB;
CREATE DATABASE testDB;
USE testDB;
CREATE TABLE USER (
userid VARCHAR(15),
nickname VARCHAR(10),
password VARCHAR(15),
PRIMARY KEY(userid)
);
'Dev > Docker' 카테고리의 다른 글
Flask API Server Dockerized (0) | 2022.11.17 |
---|---|
Docker-Compose를 활용한 NestJS Dockerized (Mac M1) (0) | 2022.05.22 |