Docker Compose là một công cụ quan trọng trong việc định nghĩa và quản lý các ứng dụng đa container Docker. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng Docker Compose để triển khai các cơ sở dữ liệu phổ biến như MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server và Elasticsearch. Việc áp dụng các file docker-compose mẫu không chỉ giúp tiết kiệm thời gian mà còn đảm bảo tính nhất quán và khả năng mở rộng cho ứng dụng của bạn.
1. Microsoft SQL Server
yaml
version: "3"
services:
gateway-mssql:
image: "mcr.microsoft.com/mssql/server:2017-latest"
container_name: mssqlserver # Tên container
restart: always
hostname: mssql
environment:
SA_PASSWORD: 123456 # Thiết lập password cho tài khoản sa
ACCEPT_EULA: Y
volumes:
- mssqlvolume:/var/opt/mssql/data # Thư mục lưu DB
- ./logjava:/var/opt/mssql/backup # Thư mục chứa file backup
ports:
- "1433:1433" # Cổng kết nối
volumes:
mssqlvolume:
2. MySQL
yaml
version: "3.7"
services:
mysql:
container_name: mysql
image: mysql:8.0
ports:
- 3306:3306
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: sample
volumes:
todo-mysql-data:
3. PostgreSQL
yaml
version: '3.0'
services:
gateway-postgres:
container_name: pg-database
image: 'postgres:latest'
environment:
POSTGRES_USER: admin # Thiết lập user
POSTGRES_PASSWORD: admin@1001 # Thiết lập password
POSTGRES_DB: logjava # Thiết lập database
PGDATA: /var/lib/postgresql/data # Nơi chứa data
volumes:
- './data/db:/data/db'
- './data/postgresql:/var/lib/postgresql/data'
ports:
- '5432:5432'
networks:
- logjava
networks:
logjava:
name: logjava
driver: bridge
4. Redis
yaml
version: '3.8'
services:
redis:
container_name: redis-01
image: redis:latest
command: redis-server --save "" --maxmemory 128mb --maxmemory-policy allkeys-lru # Giới hạn max 128MB ram cho service redis
ports:
- 6379:6379
networks:
- logjava
networks:
logjava:
name: logjava
driver: bridge
5. MongoDB
yaml
version: "3.9"
services:
my-mongodb:
image: mongo:5.0.6
container_name: mongo-gateway
ports:
- 27017:27017
environment:
- MONGO_INITDB_DATABASE=logjava_test
- MONGO_INITDB_ROOT_USERNAME=admin # Thiết lập user root
- MONGO_INITDB_ROOT_PASSWORD=admin1001
- TZ=Asia/Ho_Chi_Minh
volumes:
# Thư mục lưu data và file config
- ./mongodb:/data/db
- ./mongoconfig:/data/configdb
networks:
- ten_network
networks:
ten_network:
name: ten_network
driver: bridge
6. Elasticsearch
yaml
version: "3.0"
services:
elasticsearch:
container_name: es-container
image: docker.elastic.co/elasticsearch/elasticsearch:7.11.0
environment:
- xpack.security.enabled=false
- "discovery.type=single-node"
networks:
- es-net
ports:
- 9200:9200
deploy:
resources:
limits:
memory: 512M # Giới hạn bộ nhớ ram là 512MB
kibana:
container_name: kb-container
image: docker.elastic.co/kibana/kibana:7.11.0
environment:
- ELASTICSEARCH_HOSTS=http://es-container:9200
networks:
- es-net
depends_on:
- elasticsearch
ports:
- 5601:5601
networks:
es-net:
driver: bridge
Qua bài viết này, chúng ta đã phân tích các file docker-compose mẫu cho các loại cơ sở dữ liệu phổ biến như MySQL, PostgreSQL, MongoDB, Elasticsearch, Redis và Microsoft SQL Server. Suốt quá trình phát triển ứng dụng, việc sử dụng Docker Compose để quản lý cơ sở dữ liệu không chỉ cải thiện hiệu suất mà còn giúp tối ưu hóa quy trình phát triển. Hãy tham khảo và áp dụng những file cấu hình này để thuận tiện hơn trong việc quản lý hạ tầng ứng dụng của bạn với Docker.
source: viblo