Làm cách nào để tạo cơ sở dữ liệu MySQL trong Docker Compose?

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

  1. Tạo Docker Soạn tệp YAML cho bộ chứa MySQL Docker
  2. 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
  3. 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
4

Chú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ệu

Mộ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ác

Bâ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 sau

Kế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ổng

Nế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
4

Bâ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ôi

Chú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

Làm cách nào để tạo cơ sở dữ liệu trong MySQL bằng Docker Compose?

Khởi động MySQL .
Tạo mạng bằng cách sử dụng lệnh này. Bản sao Bash. .
Bắt đầu một bộ chứa MySQL và gắn nó vào mạng. .
Nhận ID vùng chứa của bạn bằng cách sử dụng lệnh docker ps
Để xác nhận rằng bạn đã thiết lập và chạy cơ sở dữ liệu, hãy kết nối với cơ sở dữ liệu. .
Trong trình bao MySQL, liệt kê các cơ sở dữ liệu và xác minh rằng bạn thấy cơ sở dữ liệu todos

Làm cách nào để tạo db trong Docker?

Ở cấp độ cao, đây là các bước chúng tôi sẽ thực hiện trong hướng dẫn này. .
Tải xuống ứng dụng Docker
Thiết lập tài khoản trên Docker Hub
Chạy Docker và tải xuống hình ảnh cơ sở dữ liệu
Chạy hình ảnh
Kết nối với cơ sở dữ liệu và chạy một số SQL

Bạn có thể đặt cơ sở dữ liệu trong bộ chứa Docker không?

Nếu bạn đang làm việc trên một dự án nhỏ và đang triển khai trên một máy duy nhất, bạn hoàn toàn có thể chạy cơ sở dữ liệu của mình trong bộ chứa Docker. Be sure to mount a volume to make the data persistent, and have backup processes in place. Try to restore them every once in a while to make sure your backups are any good.

Tôi có thể sử dụng MySQL với Docker không?

MySQL là một trong những cơ sở dữ liệu quan hệ tương thích với SQL phổ biến nhất. Chạy MySQL bên trong bộ chứa Docker cho phép bạn tách cơ sở dữ liệu khỏi mã của mình . Bạn cũng có thể sử dụng bộ điều phối vùng chứa như Kubernetes để mở rộng quy mô MySQL độc lập với phiên bản máy chủ API của bạn.