Triển khai các databases bằng docker
*Ký bút: devopsedu.vn kế thừa tư tưởng của elroydevops.tech luôn cung cấp kiến thức DevOps thực tế và chi tiết. Mình không cho phép bản thân làm những kiến thức mà mình không tin rằng nó tốt cho mọi người được. Nếu những bài viết dài khiến bạn không thể kiên nhẫn, thì kiến thức này dành cho những ai thật sự cần kiến thức thực tế.Mạnh, Founder
Chắc hẳn bạn cũng biết database là một phần “Không thể thiếu” trong các dự án thực tế. Với sự phát triển mạnh mẽ của mô hình triển khai microservice, công cụ kubernetes hiện nay thì việc các database được triển khai dưới dạng container đã trở lên phổ biến và hiệu quả.
Tuy nhiên, việc chạy các database dưới dạng container độc lập với những công ty outsourcing nhỏ không phải là hiếm gặp (mình đã từng đi tư vấn nên hiểu được điều này) hoặc việc tạo nhanh chóng các databases phục vụ việc làm lab thì container cũng là một cách vô cùng đơn giản phù hợp.
Nội dung
Triển khai các loại databases bằng docker
Đầu tiên, chúng ta sẽ cần cài đặt docker và docker-compose. Bạn có thể chạy script dưới đây để cài đặt nhanh chóng phiên bản mới nhất với hệ điều hành Ubuntu.
Tạo file bashscript:
Nội dung trong file như sau:
#!/bin/bash sudo apt install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update -y sudo apt install docker-ce -y sudo systemctl start docker sudo systemctl enable docker sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker -v docker-compose -v
Và khởi chạy file bashscript:
Thành công được kết quả:
Cài đặt cloudbeaver bằng docker
Hầu hết các databases khi cài đặt sẽ chỉ có thể tương tác dưới dạng command line (giao diện dòng lệnh) nên mình sẽ tiến hành triển khai một công cụ giúp kết nối và quản lý các databases bằng giao diện trực quan chính là cloudbeaver.
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: cloudbeaver: image: dbeaver/cloudbeaver:latest container_name: cloudbeaver ports: - "80:8978" volumes: - /data/cloudbeaver/:/opt/cloudbeaver/workspace restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Tiến hành truy cập trên trình duyệt với địa chỉ IP của server với Port mặc định là 80
Thiết lập thành công được kết quả:
Cài đặt postgresql bằng docker
PostgreSQL là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như NetCore, Java.
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: postgres: image: postgres:14 container_name: postgres environment: POSTGRES_PASSWORD: "95a3FqXFsUDhxRd" ports: - "5432:5432" volumes: - /data/postgresql/:/var/lib/postgresql/data restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Quay lại cloudbeaver để tiến hành kiểm tra xem đã kết nối được đến database chưa, chọn vào “New Connection” như sau:
Chọn vào PostgreSQL như sau:
Điền các thông tin kết nối của database, với Host ⇨ Địa chỉ IP server, Port ⇨ 5432, User name ⇨ postgres, User password ⇨ 95a3FqXFsUDhxRd (các thông tin trong docker-compose) như sau:
Chọn vào “Test” đã thấy kết nối thành công đến database như sau:
Cài đặt mariadb bằng docker
MariaDB là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như NetCore, Java, Php, Ruby, Python, Go,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: mariadb: image: mariadb:10.6 container_name: mariadb restart: always environment: MYSQL_ROOT_PASSWORD: "95a3FqXFsUDhxRd" ports: - "3306:3306" volumes: - /data/mysql/:/var/lib/mysql
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Chọn vào MariaDB như sau:
Điền các thông tin kết nối của database, với Host ⇨ Địa chỉ IP server, Port ⇨ 3306, User name ⇨ root, User password ⇨ 95a3FqXFsUDhxRd (các thông tin trong docker-compose) như sau:
Chọn vào “Test” đã thấy kết nối thành công đến database như sau:
Cài đặt sqlserver bằng docker
MSSQL (SqlServer) là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như NetCore, Java,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: mssql: image: mcr.microsoft.com/mssql/server:2019-latest container_name: mssql environment: SA_PASSWORD: "95a3FqXFsUDhxRd" ACCEPT_EULA: "Y" ports: - "1433:1433" volumes: - /data/mssql/:/var/opt/mssql restart: always user: "root"
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Chọn vào SQL Server như sau:
Điền các thông tin kết nối của database, với Host ⇨ Địa chỉ IP server, Port ⇨ 1433, User name ⇨ sa, User password ⇨ 95a3FqXFsUDhxRd (các thông tin trong docker-compose) như sau:
Chọn vào “Test” đã thấy kết nối thành công đến database như sau:
Cài đặt mongodb bằng docker
MongoDB là một cơ sở dữ liệu NoSQL (Not Only SQL) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: mongodb: image: mongo:4.4 container_name: mongodb ports: - "27017:27017" volumes: - /data/mongo:/data/db restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Bạn có thể sử dụng các nền tảng GUI như Mongo compass, Robo 3T,… để kết nối.
Cài đặt redis bằng docker
Redis là một cơ sở dữ liệu in-memory (In-Memory Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: redis: image: redis:6.2 container_name: redis ports: - "6379:6379" volumes: - /data/redis/:/data restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Bạn có thể sử dụng các nền tảng GUI Redisinsight, Redis Commander,… để kết nối.
Cài đặt memcached bằng docker
Memcached là một hệ thống lưu trữ cache phân tán và trong bộ nhớ (in-memory caching system), được sử dụng để tăng tốc độ truy xuất dữ liệu bằng cách lưu trữ dữ liệu trong bộ nhớ RAM và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: memcached: image: memcached:1.6 container_name: memcached ports: - "11211:11211" volumes: - /data/memcached:/data restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Cài đặt cassandra bằng docker
Cassandra là một hệ quản trị cơ sở dữ liệu NoSQL phân tán và được sử dụng trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: cassandra: image: cassandra:latest container_name: cassandra ports: - "9042:9042" volumes: - /data/cassandra:/var/lib/cassandra restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Bạn có thể sử dụng các nền tảng GUI DataStax OpsCenter, Cassandra Reaper,… để kết nối.
Cài đặt oracle bằng docker
Oracle là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…
Tạo file docker-compose:
Nội dung trong file như sau:
version: '3.8' services: oracle: image: oracleinanutshell/oracle-xe-11g container_name: oracle environment: - DB_SID=ORCLCDB - DB_PDB=ORCLPDB1 - DB_DOMAIN=localdomain - ORACLE_PWD=95a3FqXFsUDhxRd ports: - "1521:1521" volumes: - /data/oracle:/opt/oracle/oradata shm_size: '1gb' restart: always
Khởi chạy câu lệnh tạo container:
Thành công được kết quả:
Cấu hình bổ sung (bonus):
version: '3.8' services: oracle: image: wnameless/oracle-xe-11g-r2:18.04-apex container_name: OracleDb restart: always environment: - ORACLE_ALLOW_REMOTE=true - ORACLE_DISABLE_ASYNCH_IO=true - ORACLE_ENABLE_XDB=true ports: - 5019:1521 - 5020:8080 dbeaver: image: dbeaver/cloudbeaver:22.1.1 container_name: CloudBeaver restart: unless-stopped volumes: - dbeaver-data:/opt/cloudbeaver/workspace ports: - 5021:8978 volumes: dbeaver-data:
Oracle APEX
http://localhost:5020/apex/apex_admin
username: ADMIN
password: Oracle_11g
Truy cập database
Host name or IP server
Port: 1521
Db hoặc sid: xe
DB credentials: system và oracle
Trên đây là các databases thông dụng nhất mà bạn có thể thấy trong các dự án thực tế.
Mình sẽ làm nhiều hướng dẫn hơn về các kỹ năng các công nghệ khác để giúp bạn tối ưu quy trình trong công việc cũng như tiết kiệm chi phí khi phát triển phần mềm. Nếu có góp ý hoặc đề xuất thêm về kiến thức mà bạn mong muốn vui lòng liên hệ contact@devopsedu.vn