Backend/DataBase

Docker를 이용해 MySQL 연결해보기.

Seyun(Marco) 2023. 4. 30. 16:12
728x90

서론

  • 도커를 사용해 MySQL을 띄우는 작업을 해볼 예정입니다.
  • docker-compse.yml을 이용해 협업자에게도 같은 환경을 제공해줄수 있다.
  • 도커를 사용하는 이유는 팀워크에서의 이점이 있기 때문이다. 프로그램은 버전에 따라 많은 차이점을 가질수가 있다. 다른 버전을 쓰면 다른 협업자에겐 오류가 나는 경우도 있다 보니, 그런 부분을 맞추기 위해 docker를 사용해 컨벤션을 지켜본다.

docker-compose

여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리를 간단히하는 기능이다.

compose 파일을 준비하여 커맨드를 1회 실행하는 것으로, 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다.

MySQL을 위한 docker-compose

  • 파일명 : docker-compose.yml
version: '3'
services:
  mysql:
    image: mysql:8.0.33 # 2023. 04. 30 기준으로 가장 최신버전
    container_name: cat-picture-db
    ports:
      - 3306:3306 # HOST:CONTAINER
    environment:
      MYSQL_ROOT_PASSWORD: admin
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - /mysql/data:/var/lib/mysql
  • version: docker-compose의 버전
  • services: 도커 가상환경에서 설치한 services들의 목록
    • mysql: 우리가 설치한 서비스
      • image: 해당 서비스를 설치할 docker image
      • container_name: 해당 서비스가 뜰 컨테이너 이름
      • ports: 가상환경으로 사용할 ports // Host:Container
      • environment: 환경변수
        • cf) MYSQL의 환경변수는 해당 주소에서 확인이 가능. 여기선 필요한것만 이야기 드림.
        • MYSQL_ROOT_PASSWORD: 슈퍼유저 계정(root)에 설정된 암호, 이 변수는 필수값
        • MYSQL_DATABSE: 이미지 시작 시 생성할 데이터베이스 이름 지정, 이 변수는 선택값
        • MYSQL_USER, MYSQL_PASSWORD: 새 사용자를 만들고 새 사용자에 암호를 설정하는데 사용, 이 변수는 선택값
        • MYSQL_ALLOW_EMPTY_PASSWORD: 디폴트는 yes로 root 사용자의 빈 암호로 컨테이너를 시작할수 있습니다. 이 변수는 선택값
        • MYSQL_RANDOM_ROOT_PASSWORD: 이폴트는 yes로 루트 사용자에게 임의의 초기 암호를 생성, 이 변수는 선택값
        • MYSQL_ONETIME_PASSWORD: 초기화가 완료되면 루트 사용자를 만료된것으로 설정해 처음 로그인시 비밀번호 강제 변경하도록 함.
        • MYSQL_INITDB_SKIP_TZINFO: 함수에 필요한 시단 데이터를 자동으로 넣음.
  • command: 실행 후 같이 사용할 명령어
  • volumes: 내 컴퓨터 내의 해당 데이터를 저장할 공간.

참고링크

https://hub.docker.com/_/mysql

728x90
728x90