Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Hướng dẫn docker hóa MySQL - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

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

Để lại một bình luậ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 *