bài viết trước, mình đã giới thiệu khái quát hoá về Docker theo hiểu biết của bản thân trong quá trình nghiên cứu về Docker. Như mình viết ở phần kết luận, để sử dụng Docker dễ dàng hơn thì những nhà phát triển Docker đã xây dựng những tool hữu ích để hỗ trợ.

Hôm nay mình xin giới thiệu (lại) một tool gần như nhất thiết phải có nếu bạn muốn xây dựng môi trường và quản lí trong Docker hiệu quá đó là Docker Compose.

Docker Compose là gì?

Docker Compose, hay gọi ngắn gọn là Compose là một công cụ dùng để định nghĩa và chạy multi-container Docker app. Với Compose, bạn sử dụng sẽ thiết lập các thông số cho các service của app mình trong Compose file và chạy chúng với chỉ một command đơn giản.

Docker Compose

Compose là một giải pháp tuyệt vời cho việc xây dựng môi trường development, testing hoặc staging cũng như mô hình CI. Để tham khảo thêm những tính năng của Compose, bạn có thể truy cập tại đây

Cài đặt

Trước khi cài đặt Docker Compose bạn cần cài đặt Docker Engine trước, rồi sau đó làm theo hướng dẫn tại đây: https://docs.docker.com/compose/install/

Sử dụng cơ bản

Chúng ta sẽ trải qua 3 bước:

  • Xây dựng môi trường cho từng service bằng Dockerfile, sau đó có thể tái sử dụng nó.
  • Định nghĩa các services với các thông số cần thiết bằng docker-compose.yml để chúng có thể run cùng nhau và độc lập về môi trường (tính chất của container).
  • Cuối cùng, chỉ việc chạy câu lệnh docker-compose up để chạy toàn bộ các services trong app của bạn.

Một file docker-compose.yml sẽ có dạng như thế này:

version: '3'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

Phần services sẽ định nghĩa các thông số cho từng container, ở đây là webredis. Các container sẽ được build từ Dockerfile hoặc run trực tiếp từ image, kèm với đó là các thiết lập như tạo network, mount data, expose...

Có thể thấy, thay vì tự tay chạy một loạt các command để build, mount, expose port,... rất dễ nhầm lẫn thì ta thiết lập trong tất cả một file, sau đó chạy một câu lệnh duy nhất! Quá dễ dàng phải không nào?

Các thông số để thiết lập cho Compose file bạn có thể tham khảo ngay tại trang chủ của Docker.

Gợi ý cấu trúc

.
├── backup
│   └── Dockerfile
├── development.yml
├── docker-compose.yml
├── ghost
│   └── Dockerfile
├── nginx
│   ├── config
│   │   ├── vnlab_dev.conf
│   │   └── vnlab_prd.conf
│   ├── nginx.conf
│   └── ssl
│       ├── dhparams.pem
│       ├── vietnamlab.vn.key
│       └── vietnamlab.vn.pem
├── php
│   ├── Dockerfile
│   └── php.ini
└── production.yml

Website của VNLAB cũng sử dụng Docker Compose để thiết lập nhanh môi trường development lẫn production. Trong đó:

  • Các folder sẽ chứa Dockerfile và các file config cần thiết.
  • docker-compose.yml sẽ định nghĩa toàn bộ services và các config dùng chung cho tất cả các môi trường.
  • development.ymlproduction.yml sẽ định nghĩa các config riêng dành cho từng môi trường, ví dụ như password của mariadb phải khác nhau.

Sau khi đã config xong, bạn chỉ cần chạy câu lệnh đơn giản để khởi tạo toàn bộ services chỉ trong một thời gian ngắn:

$ docker-compose -f docker-compose.yml -f [file môi trường].yml up -d

Kết luận

Docker Compose là một giải pháp hữu hiệu và cực kì hiệu quả để bạn xây dựng cũng như quản lý toàn bộ services cho ứng dụng của bạn, không chỉ dễ viết, mà còn rất dễ hiểu, rõ ràng giúp những ai đang nghiên cứu Docker dễ nắm bắt hơn.

Quá trình sử dụng Docker còn nhiều điều thú vị, hẹn gặp mọi người vào các tool khác dành cho Docker để có thể triển khai ứng dụng Enterprise tin cậy hơn.

Tham khảo