Ops, Infra, etc/🐋 Docker (+Swarm)

docker로 개발용 mysql 컨테이너 올린 후 원격접속하기

DarrenKwonDev 2021. 5. 6. 22:25

요새 개발용으로 도커 올리는 건 프론트엔드도 기본이 되어서 나도 이번 기회에 좀 써보려고 한다.

이번에 진행할 프로젝트를 아래와 같은 구조로 만들어 주었다.

 

우선 dockerhub에 올려져있는 이미지와 설명글을 참고하여 docker-compose.yml을 작성해보겠습니다.

hub.docker.com/_/mysql

 

mysql

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 

version: '3.1'

services:
  db:
    image: mysql
    restart: always
    command: --lower_case_table_names=1 # 대소문자 구분
    container_name: mysql-db
    environment:
        - MYSQL_DATABASE=생성할DB이름
        - MYSQL_ROOT_PASSWORD=님비번입력  
        - TZ=Asia/Seoul
    command:
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
    volumes:
        - ./db:/var/lib/mysql # db 볼륨 처리
    ports:
      - 3306:3306

 

그 이후 아래와 같은 과정을 거쳐 mysql 컨테이너를 올려주면 됩니다.

docker-compose up -d // 컨테이너 생성
docker exec -it CONTAINER_ID /bin/bash // mysql 컨테이너 내부 접속
mysql -u root -p // 접속

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password by 'yourpassword';
FLUSH PRIVILEGES;

 

privilege를 flush하지 않으면 원격 접속 자체가 되지 않습니다. 위 과정은 mariaDB를 사용해도 똑같이 해줘야 하는 과정입니다.

 

이제 이렇게 생성한 mysql에 3306 포트로 접근하여서, 마음대로 가지고 놀다가 무슨 문제가 생기면 컨테이너를 통째로 날리고, db에도 문제가 있으면 볼륨 경로도 날려버리면 됩니다. 

 

생각보다 쉽고 간편해서 기분 좋았음 ^^