ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mysql] docker compose로 mysql 설치 (+m1 맥북)
    DataBase/Mysql 2022. 6. 25. 21:00

    맥북에서 docker를 설치하려면 공식 사이트에서  docker desktop을 설치하고 실행하면 됩니다.

     

    공식 사이트를 들어가보면 다음과 같이 인텔 기반의 맥북과 실리콘(m1, m2) 기반의 맥북 설치버전이 나뉘어진 것을 알 수 있습니다.

    docker 까지는 설치가 무난하지만 이번에는 m1 기반의 맥북에서 docker로 mysql를 설치해보는 것입니다.

    (다운 받을 버전은 docker hub 공식 사이트에서 정보를 확인할 수 있다.)

     

    우선 디렉토리 구조에 대해서 살펴보면,

    - db
        - conf.d
        - data
            - ...
        - initdb.d - sql 문을 넣어두는 부분 생략가능
            - create_table.sql
            - load_data.sql
    - docker-compose.yml
    - .env
    - my.cnf

    각각 간단히 설명해보면, conf.d는 내부 mysql 설정정보이다. 해당 사항은 사용해보지 않아서 정확한 정보는 모르겠..

    data는 mysql docker 내부 데이터 정보가 들어가는 곳이고 initdb.d 부분은 이미 써둔것처럼 sql를 미리 작성하여 생성시 호출하는 부분입니다. (예제에서는 생략)

    다음으로 .env파일은 계정정보를 담은 부분이고 my.cnf는 mysql character set 정보를 담는 부분입니다. (이 부분이 사실 mysql에 전반적인 설정을 변경할 수 있는 부분이지만 이번 예제 실습에서는 인코딩 부분만을 담았습니다.)

     

    위에 설명한 디렉토리 구조를 생성하는 명령어입니다.

    mkdir -p db/conf.d db/data

     

    다음 정보는 docker mysql로 실행할 수 있는 docker compose 정보입니다.

    version: "3"
    
    services:
      db:
        container_name: mysql_docker
        image: mysql
        ports:
          - 3306:3306
        volumes:
          - ./db/conf.d:/etc/mysql/conf.d
          - ./db/data:/var/lib/mysql
          - ./my.cnf:/etc/mysql/my.cnf
        env_file: .env
        environment:
          TZ: Asia/Seoul
        networks:
          - backend
        restart: always
        command: # 명령어 실행
          - --character-set-server=utf8mb4
          - --collation-server=utf8mb4_unicode_ci
    
    networks:
      backend:

     

    다음은 환경변수 설정을 담은 .env파일입니다. 계정 정보는 관리에 주의할 것!

    MYSQL_HOST=localhost
    MYSQL_PORT=3306
    MYSQL_ROOT_PASSWORD=password
    
    MYSQL_USER=user
    MYSQL_PASSWORD=password

     

    character set 정보를 담은 my.cnf파일 정보입니다. 해당 정보를 입력하지 않아서 예전에 latin1 인코딩이 기본설정이라 엄청 헤맨 적이 있습니다. 인코딩에 문제가 있다면 꼭 입력하시길.

    [client]
    default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci

     

    이렇게 구성을 하고 docker-compose.yml 경로에서 docker-compose up -d 명령어를 수행하면 됩니다.

    그런데 아마 이렇게 실행하시면 m1 맥북의 경우에는 mysql docker image를 찾을 수 없다고 나올 수 있습니다.

     

    이런 문제는 docker image를 pull받을 때 플랫폼을 명시적으로 작성해주면 해결됩니다. 그래서 보통 관련 플랫폼을 명시한 이미지를 먼저 pull하고 수행하면 잘 동작하는 것을 알 수 있습니다. 

     

    다음 명령어를 미리 수행하여 docker image를 pull 받으시면 됩니다. (mysql 5, 8 버전에 현재 가장 최근 버전에 대한 이미지 정보입니다.)

    # mysql 8버전
    docker pull --platform linux/amd64 mysql:8.0.29
    
    # mysql 5버전
    docker pull --platform linux/amd64 mysql:5.7.38

     

    그리고! 모든 소스 정보는 github에서 확인하실 수 있습니다. 

    도움이 되셨다면 star 한번 부탁드립니다 :)

     

    'DataBase > Mysql' 카테고리의 다른 글

    [Mysql] Data Truncated error  (0) 2022.04.15
    [Mysql] Incorrect string value .. charset 설정할 것!  (0) 2022.03.20
Designed by Tistory.