Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

MySQL là một trong những hệ thống quản lý cơ sở dữ liệu (CSDL) phổ biến nhất trên toàn cầu. Đây là một phần quan trọng không thể thiếu khi xây dựng các ứng dụng web sử dụng nhiều ngôn ngữ lập trình như PHP, Python, Ruby… Trong bài viết này, chúng tôi sẽ cung cấp hướng dẫn về việc đóng gói CSDL MySQL bằng Docker để giúp bạn thực hiện quá trình này một cách dễ dàng.

Để 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

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

Trả lời

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 *