Trong thời đại công nghệ ngày nay, các tổ chức phải nhanh chóng phát hành ứng dụng để thu hút và duy trì hoạt động kinh doanh. Điều này giúp các nhóm xây dựng và định cấu hình môi trường triển khai với tốc độ nhanh hơn với chi phí thấp hơn. Tuy nhiên, các công nghệ container hóa sẽ giải cứu cho việc xây dựng một cơ sở hạ tầng nhẹ
Bài viết này sẽ làm rõ phương pháp triển khai và kết nối với máy chủ MySQL trong môi trường dựa trên vùng chứa
Bây giờ, chúng ta hãy đi sâu vào vấn đề
2. Triển khai vùng chứa MySQL
Đầu tiên, hãy xem xét các bước liên quan đến việc triển khai bộ chứa MySQL. Về cơ bản, MySQL theo mô hình kiến trúc Client-Server. Ở đây, máy chủ là một hình ảnh chứa cơ sở dữ liệu, trong khi máy khách được sử dụng để truy cập cơ sở dữ liệu trên máy chủ
Chúng tôi đã chia quy trình triển khai thành ba phần
2. 1. Triển khai máy chủ MySQL
Bây giờ, hãy mang phiên bản máy chủ MySQL vào Docker. Chúng ta có thể chỉ cần xây dựng một vùng chứa dựa trên hình ảnh MySQL được lấy từ Docker Hub. Có hai điểm chúng ta nên cân nhắc khi chọn phiên bản hình ảnh nào sẽ lấy từ Docker Hub
- Official Image Stamping – Đây là những hình ảnh được quản lý và bảo mật hơn từ nhóm nhà phát triển MySQL
- Thẻ mới nhất – Trừ khi chúng tôi có bất kỳ đặt chỗ nào trên phiên bản MySQL, chúng tôi có thể sử dụng phiên bản mới nhất có sẵn trong kho lưu trữ
Hãy kéo image MySQL chính thức từ Docker Hub bằng lệnh docker pull
$ docker pull mysql:latest
latest: Pulling from library/mysql
f003217c5aae: Pull complete
…
… output truncated …
…
70f46ebb971a: Pull complete
db6ea71d471d: Waiting
c2920c795b25: Downloading [=================================================> ] 105.6MB/107.8MB
26c3bdf75ff5: Download complete
Thông thường, hình ảnh là các lớp riêng biệt được liên kết chặt chẽ theo một dạng có thứ tự như được mô tả trong tệp kê khai. Lệnh kéo docker của chúng tôi sẽ lấy các lớp hình ảnh từ cửa hàng blob và tự động tạo hình ảnh bằng tệp kê khai
…
… output truncated …
…
4607fa685ac6: Pull complete
Digest: sha256:1c75ba7716c6f73fc106dacedfdcf13f934ea8c161c8b3b3e4618bcd5fbcf195
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
Hình ảnh đi kèm có mã băm để tham khảo trong tương lai như đã trình bày ở trên
Không chần chừ gì nữa, hãy chạy container. Lệnh docker run thường tạo lớp vùng chứa có thể ghi trên đầu các lớp hình ảnh. Chúng tôi sẽ cần cung cấp tên bộ chứa bằng cách sử dụng đối số -name và sử dụng hình ảnh MySQL với thẻ mới nhất. Hơn nữa, chúng tôi sẽ đặt mật khẩu máy chủ MySQL thông qua biến môi trường MYSQL_ROOT_PASSWORD. Trong trường hợp của chúng tôi, mật khẩu được đặt thành “baeldung”
Cuối cùng, tùy chọn -d giúp chúng ta chạy container dưới dạng daemon. Đầu ra ném một mã băm khác để quản lý vùng chứa trong tương lai
$ docker run --name bael-mysql-demo -e MYSQL_ROOT_PASSWORD=baeldung -d mysql:latest
fedf880ce2b690f9205c7a37f32d75f669fdb1da2505e485e44cadd0b912bd35
Chúng ta có thể thấy tất cả các container đang chạy trong một máy chủ thông qua lệnh ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fedf880ce2b6 mysql:latest "docker-entrypoint.s…" 17 seconds ago Up 16 seconds 3306/tcp, 33060/tcp bael-mysql-demo
2. 2. Cài đặt máy khách MySQL
Bắt buộc phải cài đặt ứng dụng khách để dễ dàng truy cập vào máy chủ MySQL. Tùy thuộc vào nhu cầu của chúng tôi, chúng tôi có thể cài đặt ứng dụng khách trên máy chủ hoặc bất kỳ máy hoặc bộ chứa nào khác có khả năng truy cập IP với bộ chứa máy chủ
$ sudo apt install mysql-client -y
Reading package lists.. Done
Building dependency tree
Reading state information.. Done
mysql-client is already the newest version [5.7.37-0ubuntu0.18.04.1].
…
… output truncated …
…
Bây giờ, hãy kích hoạt trích xuất đường dẫn cài đặt và phiên bản của máy khách MySQL
$ which mysql
/usr/bin/mysql
$ mysql --version
mysql Ver 14.14 Distrib 5.7.37, for Linux [x86_64] using EditLine wrapper
2. 3. Thiết lập truyền thông
Tiếp theo, hãy đăng nhập vào máy chủ bằng ứng dụng khách đã cài đặt. Theo truyền thống, chúng tôi sử dụng lệnh MySQL với tên người dùng và mật khẩu để đăng nhập máy chủ. Tuy nhiên, nó sẽ không hoạt động trong trường hợp các giải pháp dựa trên vùng chứa
$ mysql -u root -p
ERROR 2002 [HY000]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' [2]
Chúng tôi sẽ kết thúc với các lỗi ổ cắm như minh họa ở trên. Ở đây, điều quan trọng là phải hiểu rằng máy chủ MySQL là một thùng chứa và không được cài đặt đơn giản trên máy chủ. Như đã nêu trong phần trên, vùng chứa là các máy chủ hạng nhẹ có tài nguyên điện toán, kết nối mạng và lưu trữ riêng
Lệnh kiểm tra giúp phân bổ địa chỉ IP cho phiên bản máy chủ MySQL
$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' bael-mysql-demo
172.17.0.2
Hãy cung cấp địa chỉ IP ở trên trong tùy chọn máy chủ của máy khách, với số cổng và loại giao thức mặc định là TCP
________số 8_______Xin chúc mừng, chúng ta đã đăng nhập thành công vào máy chủ MySQL
3. Phần kết luận
Tóm lại, chúng ta đã xem chi tiết các bước để triển khai bộ chứa máy chủ MySQL, cài đặt ứng dụng khách MySQL trên máy chủ và cuối cùng, thiết lập kết nối giữa chúng bằng thông tin bộ chứa