MySQL (và các biến thể như Máy chủ Percona) cung cấp một cơ sở để tạo cơ sở dữ liệu trên khởi động vùng chứa đầu tiên được mô tả trong phần "Khởi tạo phiên bản mới" trong trang trung tâm docker .
Một tệp Dockerfile sử dụng kỹ thuật này sẽ giống như
FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/
Lưu ý:dấu gạch chéo ở cuối thư mục là quan trọng.
Khi bạn docker run
hình ảnh này, docker sẽ tạo vùng chứa, dockerrypoint.sh"> dockerrypoint.sh -entrypoint.sh
sẽ thực thi tập lệnh sql, và sau đó vùng chứa sẽ sẵn sàng để phân phát dữ liệu.
Dữ liệu sẽ tồn tại thông qua khởi động lại vùng chứa - dữ liệu gốc và các sửa đổi tiếp theo.
Bạn có thể sử dụng lại vùng chứa để có thời gian khởi động nhanh hơn - các lần khởi động vùng chứa tiếp theo sẽ không cần khởi tạo cơ sở dữ liệu hoặc khởi tạo dữ liệu. Khi bạn cần dữ liệu nguyên bản, hãy xóa vùng chứa và docker run
hình ảnh một lần nữa.
Khi bạn xóa vùng chứa, hãy nhớ xóa ổ đĩa chứa dữ liệu db:docker rm -v $CONTAINER_NAME
.
Tôi sử dụng phương pháp này để cung cấp dữ liệu chuẩn cho ngôn ngữ / khuôn khổ POCs cũng như CI / CD. Việc khởi tạo một cơ sở dữ liệu mới và gieo một lượng lớn dữ liệu có thể mất vài phút, vì vậy bạn sẽ cần một số logic để tạm dừng các hoạt động tự động cho đến khi bạn có thể tạo thành công kết nối db.
Hy vọng điều này sẽ giúp bạn trên con đường của bạn.