[DevOps] Hướng dẫn docker hóa MySQL


MySQL là 1 trong những hệ quản trị CSDL phổ biến nhất trên thế giới. Nó là 1 phần không thể thiếu khi xây dựng các ứng dụng web với nhiều ngôn ngữ như PHP, Python, Ruby… Trong bài viết thuộc serial DevOps, mình sẽ hướng dẫn các bạn docker hóa CSDL MySQL.

Để tiến hành Docker hóa MySQL cho môi trường phát triển ứng dụng, các bạn cần các tiền đề sau:

  1. Đã cài đặt DockerDocker Compose
  2. Tham khảo trang Docker chính thức của MySQL tại đây

Tạo và khởi động MySQL container

Đây là lệnh tạo và chạy 1 docker container đơn giản nhất.

docker run --name <mysql_name> -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql:<tag>

Với

  • <mysql_name> là tên của mysql container
  • <root_password> là mật khẩu của user root
  • <tag> là version của mysql. mysql:latest là sẽ sử dụng version mới nhất của MySQL

VD:

docker run --name vinasupport_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:lastest

Truy cập vào MySQL Container

docker exec -it <mysql_name> bash

Chỉ định thư mục MySQL Config

docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

-v để map thư mục /etc/mysql/conf.d ra ngoài.

Chỉ định thư mục Data của MySQL Container

Để khi mỗi lần tạo và xóa container không làm mất dữ liệu, chúng ta cần mount thư mục data ra ngoài như sau:

docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Backup và khôi phục Dữ liệu từ MySQL

Để backup dữ liệu

docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

Để khôi phục dữ liệu

docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

Còn Khởi động, tạm dừng, xóa MySQL container vui lòng tham khảo bài viết sau:

Sử dụng Docker Compose để tạo MySQL Container

Tạo file docker-compose.yml có chứa nội dung sau:

version: '3.1'
services:
  db:
    image: mysql
    container_name: mysql-server
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_USER=vinasupport
      - MYSQL_PASSWORD=123456
      - MYSQL_DATABASE=vinasupport
    ports:
      - "3307:3306"
    volumes:
      - ./mysql-data:/var/lib/mysql

Chú ý:

  • Port 3306 trong container sẽ được map ra ngoài host là 3307
  • Nó sẽ tạo 1 volume cho thư mục data /var/lib/mysql ra thư mục ./mysql-data ở host

Để tạo và khởi động container chúng ta sử dụng command sau:

docker-compose up

Nếu bấm ctrl + c thì nó sẽ stop container vì vậy để chạy background sử dụng command bên dưới.

docker-compose up -d

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web