본문 바로가기
Database

[2] MySQL8 Docker 를 이용한 MySQL 설치(초간단) (MAC M1)

by onejunu 2022. 4. 23.

 

https://docs.docker.com/desktop/mac/apple-silicon/

 

Docker Desktop for Apple silicon

 

docs.docker.com

 

위 사이트에 접속해서 M1 칩 전용 도커를 다운로드 받습니다.

 

 

 

1. docker-compose.yml  파일 작성

아래 docker-compose.yml 파일을 복사하여 생성합니다.

version: '3' # 파일 규격 번호
services:
  local-db:
    platform: linux/x86_64    # 추가된 라인 M1 에서만 추가
    image: library/mysql:8.0.23
    container_name: local-db
    restart: always
    command: # 명령어 실행 한글 깨짐 방지
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    ports:
      - 13306:3306 # 호스트 : 컨테이너
    environment:
      MYSQL_ROOT_PASSWORD: root # 초기비밀번호
      TZ: Asia/Seoul
    volumes:
      - ./db/mysql/data:/var/lib/mysql # 디렉토리 마운트 설정

 

저는 아래 이미지 처럼 보이는 경로에 작성하였습니다.

 

  • version : 파일의 규격 번호입니다. docker-compose파일을 해석하기 위한 버전 같은 것이라고 보면 됩니다.
  • services: 컨테이너에 어떤 서비스를 넣을 건지 지정합니다.
  • local-db : 서비스의 별칭입니다.
  • platform: 원래는 플랫폼을 명시하지 않아도 되지만 mac m1에서는 명시하지 않으면 "no matching manifest for linux/arm64/v8 in the manifest list entries" 라고 에러를 냅니다.  참고 : https://unluckyjung.github.io/develop-setting/2021/03/27/M1-Docker-Mysql-Error/
 

no matching manifest for linux/arm64/v8 in the manifest list entries 해결

M1 버전의 docker를 사용시 발생하는 에러를 해결해봅니다. ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries 에러 해결

unluckyjung.github.io

  • restart : docker가 재시작된 경우 컨테이너도 재시작 할건지 옵션. 예상치 못한 에러로 도커가 재시작된다면 always인 경우 컨테이너는 항상 재시작합니다.
  • command: 명령어를 실행할 수 있는데 mysql의 문자열 옵션을 주었습니다.
  • ports: 호스트 환경과 컨테이너 환경간 통신을 위한 포트 번호입니다.
  • environment: 데이터베이스의 초기 비밀번호를 지정합니다.
  • volumes: 컨테이너와 호스트의 디렉토리를 마운트 합니다. 마운트 볼륨과 볼륨생성은 조금 다른데 다음에 도커를 다룰때 자세하게 해보겠습니다. 지금은 mysql 환경설정에만 집중합니다.

 

docker-compose 명령어를 통해서 컨테이너를 생성합니다. 아래 명령어는 반드시 docker-compose.yml 파일이 있는 곳에서 해야합니다.

docker-compose up -d

그러면 아래와 같이 도커 컨테이너가 실행중이면서 생성되었습니다.

 

2. MySQL 접속하기

아래 명령어로 현재 실행중인 컨테이너 목록을 확인합니다.

docker ps -a

저는 local-db 라는 컨테이너 이름으로 실행되고 있는 목록이 보입니다.

 

local-db 의 bash 쉘에 접속합니다.

docker exec -it local-db bash

 

mysql 을 실행합니다.

mysql -u root -p

 

설정한 비밀번호인 "root" 를 입력하면 아래 화면 처럼 접속됩니다.

 

3.  GUI 설치 ( MySQL workbench) 

https://archive-me-0329.tistory.com/10

 

M1 맥북에 MySQL Workbench 설치하기

수업에서는 학과 자체 리눅스 서버를 쓰기 때문에 workbench 를 쓸일은 없지만, 그래도 나중에 편하다고 해서 설치를 진행했다. 그런데 이게 무슨... 또 m1 칩의 장난인지 설치는 되었는데 보안을 해

archive-me-0329.tistory.com

위 글 참고 하셔서 workbench를 설치합니다.  저는 8.0.21 버전입니다.

참고로 설치 경로는 아래 경로입니다.

https://downloads.mysql.com/archives/workbench/

 

MySQL :: Download MySQL Workbench (Archived Versions)

Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Workbench, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.

downloads.mysql.com

 

 

4. GUI 와 도커 연결 

MySQL Connections 옆에 + 모양을 클릭합니다.

 

Connection name 아무거나 입력해주고

Hostname 은 로컬호스트인 127.0.0.1 로 지정합니다.

 

포트번호는 13306 입니다. 위에서 호스트의 포트번호를 13306으로 지정했기 때문입니다.

그리고 OK 버튼 누르면 이상한 경고문이 뜨긴하는데 계속 클릭하다보면 비밀번호를 입력하라고 창이 뜹니다.

 

비밀번호에 "root" 를 입력하면 아래와 같이 나오면 성공입니다.

 

 

5.  테스트

아래 명령어를 쭉 복사하고 cmd + enter 키를 이용해 하나하나 씩 잘 되는 지 확인해봅니다.

 

show databases;
create database testdb;
show databases;
use testdb;
show tables;

CREATE TABLE professor (
professor_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL,
belong VARCHAR(12) DEFAULT 'FOO',
 phone VARCHAR(12)
 ) ENGINE=INNODB;

 desc professor;

 INSERT INTO professor (name, belong, phone) VALUES('유재석', 'IDE','01112345678');

 SELECT * FROM professor;

6. 컨테이너를 중지한다면 ??

docker 어플리케이션을 클릭하여 중지버튼을 눌러봅니다.

 

아래 명령어를 통해 컨테이너의 상태가 exited 임을 확인합니다.

docker ps -a

그리고 workbench 에 접속해보면 정지되어있다고 나옵니다.

그렇다면 데이터도 날아갔을까요??

 

다시 도커 어플리케이션을 열어 시작버튼을 누르고 workbech 에서 아래 SQL을 실행합니다.

use testdb;

select * from professor;

컨테이너가 중지되든 말든 데이터는 존재합니다. 

이유는 컨테이너에서 mysql의 데이터저장된 경로를 호스트로 마운트했기 때문입니다.

 

댓글