Web / Was 만 도커를 이용해 배포하는 이유는 Mysql, MariaDB 등의 공식 도커가 너무 잘되어 있어서 이다.
그래서 이용하는 법만 알면 되는데. ‘ㅅ’a
공식 소개 페이지에 잘 나와 있긴 하지만 docker 사전 지식 없이 사용을 하기엔 설명을 건너 뛴 부분이 많다.
여기서는 MariaDB 공식 도커이미지를 가지고 간단히 DB를 띄우는 방법에 대한 부분만 설명 한다.
사용할 버전은 10.11 버전이다. 10.11을 사용하는 이유는 LTS 이기 때문에 지금 당장은 가장 오랜 업데이트가 지원될 예정이기 때문이다. (https://endoflife.date/mariadb)
– 2024-09-19 추가 : 현재 11.4 가 마지막 Long Term Support 버전이다. ‘ㅅ’a –
사용할 도커 이미지: mariadb – Official Image | Docker Hub
1. 이미지 pull 및 run을 한다.
|
~]# docker pull mariadb:10.11 ~]# docker run -d --name project_db \ -p 3306:3306 \ --restart unless-stopped \ -v /etc/mysql/mariadb.conf.d/:/etc/mysql/mariadb.conf.d/ \ -v /var/lib/mysql:/var/lib/mysql \ -e TZ=Asia/Seoul -e MARIADB_ROOT_PASSWORD=루트패스워드 \ mariadb:10.11 C:\> docker run -d --name project_db -p 3306:3306 -v d:\project1\mariadb.conf.d:/etc/mysql/mariadb.conf.d/ -v d:\project1\mariadb:/var/lib/mysql --env MARIADB_ROOT_PASSWORD=루트패스워드 mariadb:10.11 |
2. mysql을 이용 한다. = _ =..
|
~]# docker exec -it project_db mysql -uroot -p루트패스워드 mysql |
3. 그냥 글을 마무리 하기 심심하니.. 데이터베이스 생성, 유져 생성 쿼리…
|
# 데이터 베이스 생성 MYSQL> CREATE DATABASE 데이터베이스명; # 일반 사용자 생성. MYSQL> GRANT ALL PRIVILEGES ON 데이터베이스명.* TO 'DB아이디'@'%' IDENTIFIED BY '패스워드'; # 루트 사용자를 생성 하면서 패스워드를 지정한다. MYSQL> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '루트패스워드' WITH GRANT OPTION; |
PS. docker run 에 대한 옵션에 대한 설명.
--restart unless-stopped
: stop 명령을 내린게 아니라면 (재 부팅 또는 도커 데몬을 스탑 한경우..) 자동으로 시작 하는 옵션.
-v /etc/mysql/mariadb.conf.d/:/etc/mysql/mariadb.conf.d/
: my.cnf 수정이 필요한 DB 튜닝의 경우 /etc/mysql/mariadb.conf.d/custom.cnf
파일을 만들고 내용을 넣고 컨테이너를 재시작 하면 적용 된다.
-v /var/lib/mysql:/var/lib/mysql
: mysql 의 데이터 폴더를 마운트 한다.
docker를 이용한 데이터베이스 사용은 업데이트를 편하게 하기 위함이기 때문에 container 를 다시 run 하면 안의 내용을 모두 유실 하게 된다. 때문에 이와 같이 주요 폴더는 호스트OS 와 연결 하여 사용 하면 된다.
-e TZ=Asia/Seoul
만들려는 인스턴스의 timezone을 Seoul(+9) 으로 설정 한다.
-e MARIADB_ROOT_PASSWORD=루트패스워드
run 할때 루트패스워드를 지정해서 생성 한다.(미지정시 랜덤 생성)
연결할 WEB / WAS 구현은 아래 글을 확인합니다 ‘ㅅ’a
OCI arm 인스턴스에서 docker로 web, was 사용