행복한 하루

Raspberry Pi에 Docker로 MariaDB 설치하기 본문

RaspberryPi

Raspberry Pi에 Docker로 MariaDB 설치하기

변화의 물결 2023. 3. 31. 21:11

 

안녕하세요.

 

  이번에는 MQTT 데이터 저장 혹은 기타 데이터 저장 용도로 사용하기 위해서 무료 라이센서은 MariaDB를 Raspberry Pi에 설치해 보았습니다. 그냥 되겠거니 했는데 도커로 바로 설치가 되지 않아서의 아키덱처에 맞는 버전을 선택해서 설치해주어야 했습니다. 그냥 쉽게 apt-get install mariadb-server로 해봐도 되지 않을까 합니다.


1. 기본 준비사항

1.1 도커 설치

  - Raspberry Pi에 Docker를 간단하게 명령어로 할 수 있습니다.(하단 참고사이트 참고) 그런데 docker-compose 2.x 버전을 도커와 같이 curl 명령어로 설치하려고 잘 안되어서 참고 사이트처럼 버전은 낮지만 쉽게 설치하였습니다.

 $ sudo pip3 install docker-compose

 

1.2 디렉터리 생성

  - 도커 생성 스크립트 저장과 DB의 설정을 저장할 디렉터리를 생성합니다.

 $ mkdir /home/pi/mariaDB_compose/config -p

2. 도커 생성을 위한 스크립트를 작성

  - docker pull ubuntu 해서 처음부터 설치해도 되지만 그 부분을 조금 뛰어넘어, Docker-compose를 이용하면 환경설정과 시작을 편리하게 할 수 있어서 이용해 보았습니다.

 

  - 스크립트상에서 containter_name, ports 등을 원하는 정보로 바꿔주면 됩니다. 주의할 것은 image 부분에서 최신  mariaDB를 사용하고자 한다면 docker 지원해 주는 버전을 찾아 바꿔야 합니다. 그런데 라즈베리파이는 arm 버전이고 32, 64bit 따라 바꿔주어야 합니다.  감사하게도 hub.docker.com에서 arm 용이 있어서 사용합니다.

 

 - ports는 외부에서 도커 컨테이너 안으로 들어오는 포트로 외부에서 mariaDB로 접속할 수 있는 포트이며 서로 매핑됩니다.

 

 - volumes는 도커 컨테이너 안쪽에서 저장되는 디렉터리와 컨테이너 외부 라즈베리 파이 디렉터리를 마운트 시키는 경로입니다. 컨테이너가 문제가 생겨서 데이터가 날아갔을 때를 대비하기 위함입니다.

 

pi@raspberrypi:~/mariaDB_compose $ vim docker-compose.yml

version: '3.1'

services:
  mariadb:
    image: lscr.io/linuxserver/mariadb:latest
    container_name: forAll_mariaDB
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - MYSQL_ROOT_PASSWORD=mariadbpw
      #- MYSQL_DATABASE=USER_DB_NAME #optional
      #- MYSQL_USER=MYSQL_USER #optional
      #- MYSQL_PASSWORD=DATABASE_PASSWORD #optional
      #- REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql #optional
    volumes:
      - /home/pi/mariaDB_compose/config:/config
    ports:
      - 3306:3306
    restart: unless-stopped

 

3. 스크립트 실행

  - 컨테이너 이름이 생성되고 컨테이너가 시작된 것을 확인할 수 있습니다.     

pi@raspberrypi:~/mariaDB_compose $ docker-compose up -d
pi@raspberrypi:~/mariaDB_compose $ docker ps

4. MariaDB 실행

  - docker MariaDB container에 접속하기

$ docker exec -it forAll_mariadb bash

 

 - root 계정으로 MariaDB에 접속하기 ( 암호는 docker-compose.yml 에서 입력한 값)

$ mysql -u root -p

5. DB 생성 및 사용자 추가

  - 테스트할 데이터베이스를 생성합니다. (테스트로 센서값 저장하기 위해서 sensorDB로 정함)

> create database sensorDB;

  - 데이터베이스에 접근할 사용자를 추가(앞쪽이 ID와 뒤쪽이 PW로 입력)

> create user 'sensor1'@'%' identified by 'sensor1';

   - 데이터베이스에 권한 부여하고 권한 적용을 합니다.

> grant all privileges on sensorDB.* to 'sensor1'@'%';
> flush privileges;

 

  - 생성된 Database 확인

> show databases;

 

- 사용할 DB에 접속을 합니다. 그리고 이후에 Table 생성, Insert Query로 데이터 입력을 합니다

 

참고로 MariaDB와 docker 빠져나오려면 exit를 입력하면 됩니다.

이후 내용으로 MQTT 데이터를 받아서 저장하는 테스트를 해보도록 하겠습니다

 

감사합니다.

 

 

<참고사이트>

1. How To Install Docker and Docker-Compose On Raspberry Pi

https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo

2. linuxserver/mariadb

https://hub.docker.com/r/linuxserver/mariadb

3. 라즈베리파이4 Docker로 MariaDB 설치하기

https://blog.dalso.org/raspberry-pi/raspberry-pi-4/7751

4. Docker - 도커로 Mariadb 컨테이너 간편하게 설치하기

https://7942yongdae.tistory.com/130

5. Docker로 Mairadb(MySQL) 편하게 설치하기.

https://it-svr.com/mariadb-docker-install/  

 

 

Comments