Tech Blog

Oracle Cloud 인스턴스에서 Docker MySQL 사용 본문

etc./경험

Oracle Cloud 인스턴스에서 Docker MySQL 사용

agsu 2023. 3. 22. 21:48

 주가 빅데이터 머신러닝 예측 파이썬 라이브러리를 개발하는 프로젝트에서 주가 빅데이터를 클라우드 데이터베이스에 적재하고, 사용자에게 제공하는 방법을 선택했습니다. 여러 시행착오 끝에 무료 인스턴스를 생성할 수 있는 오라클 클라우드에서 mysql을 설치하고, 적재하기로 하였습니다. 

 

 

 


1️⃣ Oracle Cloud 인스턴스 생성 및 실행

 먼저, Oracle Cloud의 인스턴스를 생성합니다. 오라클 클라우드 인스턴스 생성 및 SSH 접속하기 글을 참고하여 Oracle Cloud 의 무료 인스턴스를 생성하였습니다. 

 

 오라클 클라우드 인스턴스를 성공적으로 생성했고, Putty로 인스턴스를 실행하는 것까지 모두 세팅이 완료된 상태입니다. 

 

 

 이처럼 세팅해놓은 인스턴스를 Load 하여 바로 실행할 수 있습니다. 

 

 open을 누르면 login 창이 뜨고, 아이디를 ubuntu, 그다음 puttygen에서 설정한 비밀번호를 입력합니다.  

 

  엔터키를 누르면 위와 같이 인스턴스를 실행할 수 있습니다. 

 

 

 

 


2️⃣ Docker 로 MySQL 설치  

Oracle Cloud 인스턴스 MySQL 설치 글을 참고하였습니다.

 

먼저, ubuntu 방화벽을 설정합니다. 

sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 3306 -j ACCEPT
sudo netfilter-persistent save    

# netfilter-persistent save 실패 시
sudo apt install -y netfilter-persistent

오라클 클라우드 인스턴스는 기본 이미지가 오라클 리눅스 8버전인데, Ubuntu로 변경해서 인스턴스를 생성했다면, Ubuntu의 방화벽의 설정을 따로 해줘야 외부에서 접속이 가능해집니다. 따라서, iptables Configuration을 업데이트 해주어야만 오라클 클라우드 수신규칙에서 편집한 내용들을 반영할 수 있게됩니다. 

 

 

 

docker로 MySQL 이미지 가져오기

docker 설치 

 

sudo apt-get update
sudo apt install docker.io

 

MySQL 이미지 pull 받아오기

sudo docker pull mysql

ubuntu 터미널에서 docker를 설치하고, mysql 이미지를 pull 받아옵니다. 버전을 명시하고싶으면 mysql:[버전] 과 같이 명시를 해주면 됩니다. 

 

 

 

docker-compose.yaml 파일 생성 

docker compose 설치

sudo apt install -y docker-compose

docker-compose 파일을 사용하여 도커 컨테이너를 관리하도록 하겠습니다. 먼저 docker-compose를 설치합니다. 

 

docker-compose.yaml

version : "3.1" #파일 버전
services :
        mysql :
               image : mysql:latest    # MySQL 이미지 버저너
               container_name : mysql  # 컨테이너 이름 지정
               ports :
                      - "3306:3306"    # 포트 마운트 
               restart : always
               environment :
                       MYSQL_ROOT_PASSWORD : # root 로 접속할 때 사용할 비밀번호
                       TZ : "Asia/Seoul"     # TimeZone 세팅
               command :
                       - --character-set-server=utf8mb4
                       - --collation-server=utf8mb4_unicode_ci
               volumes :
                       - /home/ubuntu/docker/data/mysql:/var/lib/mysql

그 다음, docker-compose 파일을 작성한 후 이 파일을 관리할 디렉토리에 넣습니다. 저는 루트 디렉토리에 위치시켰습니다. 

 

 

 docker-compose 파일 실행

sudo docker-compose up -d

docker-compose 파일을 실행합니다. 

 

 

실행중인 도커 컨테이너 확인

sudo docker ps

 

잘 실행되었는지 확인하고, 위의 사진과 같이 나오면 성공적으로 실행되는 것입니다. 

 

 

컨테이너 실행

sudo docker exec -it mysql bash 
mysql -u root -p

첫번째 줄에서  mysql은 컨테이너의 이름입니다. 첫째 줄을 실행하면 도커 컨테이너가 실행되며, 두번째 줄을 실행하면 mysql이 실행됩니다. mysql 실행 시 docker-compose 파일에서 설정했던 password를 입력하여 접속할 수 있습니다. 

 

 

 

 


3️⃣ 외부에서 MySQL 접속 

 mysql workbench를 사용하여 외부 접속을 실험합니다. 

Connection Name에 원하는 이름, Hostname에 ip 주소, Password에 비밀번호를 입력하고, 접속 합니다. 정상적으로 실행된다면, 이제 ubuntu 터미널 외부에서도 데이터를 처리할 수 있습니다. 

 

 

 

 

 

▪️ reference 

오라클 클라우드 인스턴스 생성 및 SSH 접속하기

Oracle Cloud 인스턴스 MySQL 설치

 

 

Comments