MariaDB 도커로 배포하기

Hyeonjun·2022년 9월 1일
0
post-custom-banner

이전 프로젝트 배포하기에 이어, Challympic을 배포하려 한다.
Challympic의 설계는 다음과 같다.

  • Challympic
    • Domain Address : /challympic
    • Client - Vue.js
      • port : 7770
      • Docker Image : nginx
      • Domain Address : /
    • Server - Spring Boot
      • port : 8880
      • Docker Image : openjdk:11
      • Domain Address : /api
    • DB - MariaDB
      • port : 6660
      • Docker Image : mariadb:10.6
      • database : challympic

Docker 이미지 만들기

Docker hub에 있는 mariadb 공식 이미지를 사용해 도커 이미지를 만든다.

Dockerfile

# mariadb 10.6 버전 이미지 사용.
FROM mariadb:10.6

ENV MYSQL_ROOT_PASSWORD {PASSWORD}

# my.cnf 세팅
RUN echo lower_case_table_names=1 >> /etc/mysql/my.cnf
RUN echo default-time-zone='+9:00' >> /etc/mysql/my.cnf
RUN echo collation-server = utf8mb4_unicode_ci >> /etc/mysql/my.cnfmy.cnf
RUN echo collation-server = utf8mb4_0900_ai_ci >> /etc/mysql/my.cnf
RUN echo character-set-server = utf8mb4 >> /etc/mysql/my.cnf
RUN echo skip-character-set-client-handshake >> /etc/mysql/my.cnf

이미지 생성

각각의 도커파일을 같은 폴더(config/challympic)에 저장해 놓은 상태이므로, Dockerfile의 이름을 Dockerfile-DB로 저장했다.
이를 실행하기 위해 아래와 같은 명령어를 사용했다.
(상기 폴더에서 진행했다.)

sudo docker build -t challympic/mariadb -f ./Dockerfile-DB .

하나씩 살펴보면 다음과 같다.

sudo docker build \ # Dockerfile로 Docker image 생성
	-t challympic/mariadb \ # image 이름을 challympic/mariadb로 저장
    -f  ./Dockerfile-DB \ # Dockerfile은 Dockerfile-DB로
    . # 현재 디렉토리에 있음.

이를 통해 다음과 같이 도커 이미지를 만들 수 있다.

Docker Container 실행

앞서 만든 도커 이미지를 사용해 도커 컨테이너에 실행한다.
명령어는 다음과 같이 구성했다.

sudo docker run --network {네트워크이름} --name {컨테이너이름} -p 6660:3306 -d challympic/mariadb

다음 명령어를 살펴보면 다음과 같다.

sudo docker run \ 				# docker 컨테이서 생성
	--network {네트워크이름} \ 	# {네트워크이름} 네트워크에 연결
    --name {컨테이너이름} \ 		# 생성될 컨테이너 이름을 {컨테이너이름}으로 설장
	-p 6660:3306 \ 				# 6660포트와 3306 포트를 연결
    -d \ 						# 백그라운드에서 실행
    challympic/mariadb			# challympic/mariadb 이미지로 실행

이렇게 도커 컨테이너를 만들 수 있다.

MariaDB 설정

최초에는 .sql파일로 설정할 내용을 모두 저장하고 실행하는 방법을 통해 진행하려 했으나...
로그인이 안되는 문제로 실패하고, 컨테이너에 직접 들어가서 실행했다.

CREATE DATABASE challympic # challympic database 생성

CREATE user '{설정할이름}'@'%' identified by '{비밀번호}' // 새로운 유저 생성
CREATE user '{설정할이름}'@'localhost' identified by '{비밀번호}'

grant all privileges on challympic.* to '{이름}'@'%' identified by '{비밀번호}';
grant all privileges on challympic.* to '{이름}'@'localhost' identified by '{비밀번호}';

flush privileges;

내부에서 뿐만 아니라, 외부에서도 접속할 수 있도록 계정을 설정했다.

마치며

자동화를 못한 것이 못내 아쉬울 따름이다.
shell script로 충분히 할 수 있을 것 같아, 계속 시도하며 해당 부분을 채울 수 있으면 좋겠는데...

참고

https://hub.docker.com/_/mariadb
https://nasn.tistory.com/m/116

profile
더 나은 성취
post-custom-banner

0개의 댓글