Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo MySQL Docker Container cho môi trường kiểm thử

Giới thiệu

Docker cung cấp hình ảnh (image) MySQL chính thức, cho phép khởi động nhanh một instance MySQL độc lập, có sẵn dependencies, phù hợp cho test, CI/CD. Cờ --rm tự động xóa container và filesystem khi dừng, giúp dọn dẹp tự động.

Tạo và chạy container

sudo docker run --rm --name=mysql-test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server
  • --rm: Tự động xóa container khi stop.
  • --name: Đặt tên container.
  • -e MYSQL_ALLOW_EMPTY_PASSWORD=yes: Cho phép root không mật khẩu (chỉ dùng dev/test).
  • -d: Chạy nền (detached).

Truy cập MySQL shell bên trong container

sudo docker exec -it mysql-test mysql -uroot
  • exec -it: Chạy lệnh tương tác trong container đang chạy.
  • mysql -uroot: Mở client MySQL với user root.

Kết nối từ bên ngoài (TCP/IP)

Docker gán IP riêng cho container. Cần tìm IP của network interface docker0 trên host và IP container để cấu hình kết nối TCP.

# IP host (docker0)
ip addr show docker0

# IP container (cách này trong bài gốc có vẻ thiếu lệnh, đúng là:)
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-test

Sau khi có IP host (ví dụ 172.17.0.1), trong MySQL shell tạo user root cho IP host:

CREATE USER 'root'@'172.17.0.1' IDENTIFIED BY '';
GRANT ALL ON *.* TO 'root'@'172.17.0.1' WITH GRANT OPTION;

Dọn dẹp

sudo docker stop mysql-test
# Container tự bị xóa nhờ --rm

Lưu ý: Không dùng MYSQL_ALLOW_EMPTY_PASSWORD trong production. Hãy đặt mật khẩu mạnh qua MYSQL_ROOT_PASSWORD.