본문 바로가기
Docker

mysql docker-compose-up 해보기

by Rogan_Kim 2023. 3. 2.
728x90

mysql을 실행하기 위한 docker-compose.yml

version: '3'
services:
  db:
    image: mysql:latest
    container_name: mysql-server
    ports:
      - '3307:3307'
    environment:
      MYSQL_ROOT_PASSWORD: password
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./data/:/var/lib/mysql

 

mysql은 보통 3306포트를 사용합니다.

기록할때 당시 로컬에 mysql 3306을 사용 중이라서 3307로 띄웠고, 이름도 겹치지 않게 'mysql-server' 로 사용하였습니다.

 

 

mysql docker-compose로 보는 도커 문법

 

version : '3'

docker-compose.yml파일의 명세 버전입니다. 버전에 따라 지원하는 도커 엔진 버전도 다릅니다.

 

 

 

version: '3'
services:
  db:
    ...

services는 실행할 컨테이너를 정의하는 부분입니다.

 

 

 

version: '3'
services:
  db:
    image: mysql:latest
    container_name: mysql-server

다음으로 image와 컨테이너 이름을 정의합니다.

image뒤의 TAG(:latest)를 생략하면 latest가 붙습니다.

또한 이미지가 없으면 pull하고 실행 됩니다.

 

 

 

version: '3'
services:
  db:
    image: mysql:latest
    container_name: mysql-server
    ports:
      - '3307:3307'

다음으로 컨테이너와 연결할 포트(들)을 설정합니다.

{호스트 포트}:{컨테이너 포트}  이렇게 넣어주면 됩니다.

해당 코드에서는 3307:3307으로 mysql을 연결했습니다.

 

 

version: '3'
services:
  db:
    image: mysql:latest
    container_name: mysql-server
    ports:
      - '3307:3307'
    environment:
      MYSQL_ROOT_PASSWORD: password

environment를 사용하여 컨테이너에서 사용할 환경변수를 세팅할 수 있습니다.

{환경변수 이름}:{값} 이렇게 넣어주면 됩니다.

해당 환경변수는 MySQL 데이터베이스 인스턴스의 루트 암호를 설정하는 데 사용됩니다.

 

 

version: '3'
services:
  db:
    image: mysql:latest
    container_name: mysql-server
    ports:
      - '3307:3307'
    environment:
      MYSQL_ROOT_PASSWORD: password
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

 

command는 컨테이너가 시작될 때 실행되는 명령어 입니다.

 

'--character-set-server=utf8mb4'  : 서버에 대한 문자 집합을 설정하는 것으로 utf8mb4 문자 세트를 사용합니다.

 

'--collation-server=utf8mb4_unicode_ci' : mysql에서  데이터 정렬을 설정하는 명령어입니다.

해당 명령어는 텍스트 데이터가 언어나 문자 집합에 관계없이 일관되게 저장 및 비교하게 해줍니다.

 

 

 

version: '3'
services:
  db:
    image: mysql:latest
    container_name: mysql-server
    ports:
      - '3307:3307'
    environment:
      MYSQL_ROOT_PASSWORD: password
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./data/:/var/lib/mysql

volumes는 마운트하려는 디렉터리(들)을 정해줍니다.

{호스트 디렉터리}:{컨테이너 디렉터리}

현재 디렉토리에서 'data'라는 폴더로 들어가서 컨테이너 디렉토리를 연결 해주는거라 생각하면 됩니다.

 

 

실행해보기

디렉토리 하나를 만들어서 해당 디렉토리에서 아래의 명령어를 입력하면 간단하게 mysql을 실행할 수 있습니다.

docker-compose up -d

-d 옵션으로 백그라운드에서 실행하기

 

접속 명령어

docker exec -it mysql-server mysql -p

'docker-server'라는 컨테이너에서 터미널을 열어서 mysql을 접속하는 명령어

비밀번호 'password'입력하면 db 접속 할 수 있습니다.

 

 

 

docker compose 명령어 정리

 

명령어 설명
docker-compose up docker-compose.yml에 정의된 컨테이너 실행
docker-compose start  멈춰 있는 컨테이너를 실행 
docker-compose restart  해당 컨테이너 재시작
docker-compose stop  해당 컨테이너 멈춤
docker-compose down  컨테이너를 종료하고 삭제
docker-compose logs 컨테이너의 로그
docker-compose ps 컨테이너 목록보기
docker-compse exec {컨테이너 이름}{명령어} 실행 중인 컨테이너에서 명령어 실행
docker-compose build 컨테이너에서 사용할 이미지를 빌드

 

 
 

 

 

728x90

'Docker' 카테고리의 다른 글

Docker run 명령어 정리  (0) 2023.03.01

댓글