Docker mang lại nhiều lợi ích cho việc triển khai và thử nghiệm các ứng dụng và cơ sở dữ liệu vốn là một phần không thể thiếu trong ứng dụng của bạn, vì vậy bạn nên học cách thiết lập và chạy bộ chứa Docker cho cơ sở dữ liệu
Trong bài viết này, chúng tôi sẽ tập trung vào các chủ đề sau
- Tạo Docker Soạn tệp YAML cho bộ chứa MySQL Docker
- Kết nối với cơ sở dữ liệu MySQL, chạy trên vùng chứa, sử dụng nhiều phương thức khác nhau
- Tạo và chạy nhiều phiên bản MySQL trong bộ chứa Docker
Hãy đi qua từng cái một
1. Tạo Docker Soạn tệp YAML cho MySQL Docker Container
Hãy tạo một thư mục, db-docker
, sau đó tạo một tệp docker-compose.yml
trong thư mục đó
mkdir db-docker
cd db-docker
touch docker-compose.yml
Về cơ bản, ở đây, chúng tôi sẽ chỉ định các dịch vụ chúng tôi sẽ sử dụng và thiết lập các biến môi trường liên quan đến các dịch vụ đó.
Chúng tôi sẽ thay đổi tệp này nhiều lần trong suốt bài viết này
Thêm phần sau vào tệp docker-compose.yml
mà chúng tôi vừa tạo
Chúng tôi đã chỉ định tên của vùng chứa MySQL của chúng tôi là
docker-compose up
1 và hình ảnh Docker sẽ được sử dụng là docker-compose up
2. Trường hợp nếu không chỉ định thẻ là docker-compose up
3, nó sẽ lấy thẻ mới nhấtĐiều tiếp theo chúng ta cần chỉ định là các biến môi trường, tôi. e. người dùng, mật khẩu và cơ sở dữ liệu. Nếu bạn không chỉ định người dùng, theo mặc định, nó sẽ là
docker-compose up
4Chúng tôi sẽ sử dụng
docker-compose up
5 làm mật khẩu và docker-compose up
6 làm cơ sở dữ liệuMột điều quan trọng khác là ánh xạ cổng.
docker-compose up
7 có nghĩa là MySQL đang chạy trong vùng chứa tại cổng docker-compose up
8 được ánh xạ tới localhost của máy chủ tại cổng docker-compose up
9. Bạn cũng có thể sử dụng một cổng khácBây giờ, sau khi tạo. yml, chúng ta cần chạy lệnh sau trong cùng thư mục chứa tệp. tập tin yml nằm
docker-compose up
Điều này sẽ lấy hình ảnh Docker [nếu hình ảnh không có sẵn cục bộ, nó sẽ lấy từ Docker Hub] rồi chạy vùng chứa
Chúng tôi có thể kiểm tra trạng thái với
docker-compose ps
Điều này sẽ hiển thị tên của vùng chứa, lệnh và trạng thái của vùng chứa, chẳng hạn như hiển thị rằng vùng chứa đang chạy. Nó cũng hiển thị ánh xạ cổng
Trong bước tiếp theo, chúng tôi sẽ kết nối với bộ chứa MySQL này và chạy một số lệnh
2. Kết nối với cơ sở dữ liệu MySQL đang chạy trong vùng chứa
Chúng tôi sẽ thảo luận về hai phương pháp để kết nối và chạy các lệnh SQL trên MySQL đang chạy trong bộ chứa Docker
Phương pháp đầu tiên là sử dụng các công cụ như MySQL Workbench [cũng có thể sử dụng DataGrip]
Vì chúng tôi hiện có một bộ chứa MySQL đang chạy tại cổng máy cục bộ của chúng tôi
docker-compose up
9, chúng tôi có thể kết nối bằng cách sử dụng các tham số cấu hình sauKết nối thông qua cổng của máy cục bộ
docker-compose up
9 chỉ có thể thực hiện được do ánh xạ cổngNếu chúng tôi muốn kết nối với MySQL được đóng gói mà không cần ánh xạ cổng, tôi. e. từ một ứng dụng khác chạy trên cùng một mạng Docker, chúng tôi phải sử dụng các công cụ như Adminer, đây là phương pháp khác của chúng tôi
Adminer là một ứng dụng web dựa trên PHP để truy cập cơ sở dữ liệu
Bây giờ, chúng tôi sẽ thêm một dịch vụ khác cho Quản trị viên trong tệp docker-compose.yml
của chúng tôi. Tuy nhiên, trước khi thực hiện các thay đổi ở đây, chúng ta cần dừng chạy vùng chứa và xóa nó bằng lệnh sau
docker-compose down
Hãy thêm phần sau vào tệp docker-compose.yml
của chúng tôi
version: '3'
services:
mysql-development:
image: mysql:8.0.17
environment:
MYSQL_ROOT_PASSWORD: helloworld
MYSQL_DATABASE: testapp
ports:
- "3308:3306"
admin:
image: adminer
ports:
- "8080:8080"
Bây giờ, hãy bắt đầu lại Docker container
docker-compose up
Sau khi chạy, hình ảnh cho Quản trị viên sẽ được kéo và vùng chứa cho cả MySQL và Quản trị viên sẽ được bắt đầu
Chúng ta có thể kiểm tra điều này bằng cách sử dụng
docker-compose ps
4Bây giờ, chúng ta có thể truy cập trình duyệt của mình và truy cập
docker-compose ps
5 cho Quản trị viên. Vì Quản trị viên chạy trên cùng một mạng Docker với MySQL, nên nó có thể truy cập vào bộ chứa MySQL qua cổng docker-compose up
8 [hoặc đơn giản là theo tên của bộ chứa]Ghi chú. Chúng tôi không thể truy cập bộ chứa MySQL thông qua cổng
docker-compose up
9 trong Quản trị viên, vì điều này sẽ cố gắng truy cập cổng docker-compose up
9 của mạng Docker Compose, không phải cổng docker-compose up
9 của máy cục bộ của chúng tôiChúng ta cũng có thể sử dụng giao diện dòng lệnh của MySQL bằng lệnh sau
docker-compose exec mysql-development mysql -uroot -phelloworld testapp
3. Tạo và chạy nhiều phiên bản MySQL trong Docker Container
Nếu chúng tôi có một ứng dụng sử dụng một số phiên bản MySQL khác, chúng tôi cũng có thể tạo một dịch vụ cho ứng dụng đó và chạy nó trong cùng một mạng Docker
Ví dụ: nếu chúng ta cần MySQL phiên bản 5. 7. 27, chúng tôi cần thực hiện các thay đổi sau đối với tệp docker-compose.yml
, ngừng chạy vùng chứa và bắt đầu lại
version: '3'
services:
mysql-development:
image: mysql:8.0.17
environment:
MYSQL_ROOT_PASSWORD: helloworld
MYSQL_DATABASE: testapp
ports:
- "3308:3306"
admin:
image: adminer
ports:
- "8080:8080" mysql-old:
image: mysql:5.7.27
environment:
MYSQL_ROOT_PASSWORD: helloworld
MYSQL_DATABASE: coolapp
ports:
- "3309:3306"
Nếu bạn muốn biết thêm về cách sử dụng khối lượng dữ liệu và cấu hình cũng như cách kiểm tra nhật ký của bộ chứa mysql, hãy xem bài viết của tôi về nó. https. //trung bình. com/@ashutosh_34428/volumes-and-logs-in-mysql-docker-61122f8c1d84