Hướng dẫn deploy database sử dụng docker-compose

Docker là một công cụ mạnh mẽ cho việc xây dựng, đóng gói và triển khai ứng dụng. Nó cho phép ta tạo ra môi trường độc lập cho ứng dụng mà không cần phải lo lắng về việc cài đặt các phần mềm, thư viện và các yêu cầu khác. Trong bài viết này, chúng ta sẽ hướng dẫn cách triển khai cơ sở dữ liệu bằng Docker Compose.

Giới thiệu về Docker Compose

Docker Compose là một công cụ giúp ta quản lý và triển khai các ứng dụng phức tạp, đặc biệt là các ứng dụng có nhiều container. Nó cho phép ta tạo ra các môi trường độc lập cho các container và kết nối chúng với nhau. Với Docker Compose, ta có thể tạo ra một môi trường độc lập cho các container một cách dễ dàng và nhanh chóng.

Triển khai cơ sở dữ liệu với Docker Compose

Trong bài viết này, chúng ta sẽ triển khai một cơ sở dữ liệu MySQL bằng Docker Compose. Để làm được điều này, ta cần tạo một file docker-compose.yml với nội dung như sau:

version: '3.7'

services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

Trong đó:

  • version: Định dạng phiên bản của Docker Compose.

  • services: Danh sách các dịch vụ (service) trong Docker Compose.

  • db: Tên của dịch vụ cơ sở dữ liệu MySQL.

  • image: Image được sử dụng để triển khai dịch vụ.

  • restart: Chế độ khởi động lại container.

  • environment: Các biến môi trường sử dụng cho dịch vụ.

  • ports: Các cổng được sử dụng bởi container.

  • volumes: Các thư mục được chia sẻ giữa host và container.

Sau khi đã tạo file docker-compose.yml, ta có thể triển khai cơ sở dữ liệu bằng cách chạy lệnh sau:

docker-compose up -d

Trong đó, -d được sử dụng để chạy container ở chế độ daemon.

Sử dụng cơ sở dữ liệu trong ứng dụng

Sau khi triển khai cơ sở dữ liệu thành công, ta cần kết nối đến cơ sở dữ liệu trong ứng dụng. Để làm được điều này, ta có thể sử dụng địa chỉ IP và cổng của container MySQL, hoặc sử dụng tên dịch vụ trong Docker Compose.

Ví dụ, trong Python, ta có thể sử dụng thư viện mysql-connector-python để kết nối đến cơ sở dữ liệu như sau:

import mysql.connector

mydb = mysql.connector.connect(
  host="db",
  user="myuser",
  password="mypassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM mytable")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Trong đó, host="db" được sử dụng để kết nối đến dịch vụ MySQL trong Docker Compose, và user, password, database được sử dụng để truy cập đến cơ sở dữ liệu.

Kết luận

Trong bài viết này, chúng ta đã học cách triển khai cơ sở dữ liệu bằng Docker Compose. Chúng ta đã tạo một file docker-compose.yml để triển khai cơ sở dữ liệu MySQL, và sử dụng các biến môi trường để cấu hình cơ sở dữ liệu. Chúng ta cũng đã xem xét cách kết nối đến cơ sở dữ liệu trong ứng dụng. Docker Compose là một công cụ rất hữu ích để triển khai các ứng dụng phức tạp và quản lý các container.