Docker Compose là một công cụ dùng để định nghĩa và run multi-container và liên kết chúng lại với nhau. Nó sử dụng file YAML để cấu hình các service cần chạy cho ứng dụng của bạn. Ví dụ bạn cần dựng WordPress để thực hành thì sẽ cần hai container là Databases và container WordPress. Khi đó chỉ cần cấu hình trong file config cả hai services này.

Về cơ bản, việc thiết lập Docker Compose cho nhiều applications là giống nhau, nó sẽ bao gồm những bước cơ bản sau:

  1. Xác định những services cần sử dụng để khởi chạy ứng dụng.
  2. Cấu hình các services trong file config có cú pháp định dạng YAML (docker-compose.yml).
  3. Chạy file config bằng lệnh: docker-compose up -d

1. Cài đặt

Đối với Windows 10, hiện tại đã có WSL2 nên các bạn chỉ cần cài đặt Docker Desktop trước, sau đó cài đặt WSL2 cho windows là đã có thể sử dụng một hệ điều hành Linux trên Windows rồi.

2. Cấu hình file config

Tạo thư mục thực hành, và tạo file docker-compose.yml để chạy

tạo thư mục và tạo file docker-compose.yml

ở bài này chúng ta cần hai container, là databases và wordpress nên trong file docker-compose.yml chúng ta cấu hình như sau:

cấu hình file docker-compose.yml

File docker-compose.yml sử dụng định dạng YAML, vậy nên các bạn phải viết đúng cú pháp, nếu không sẽ bị lỗi, có thể vào trang Online YAML Parser để kiểm tra cú pháp viết đúng hay chưa. (chú ý dòng db và wordpress khai báo services chúng ta chỉ thụt vào 2 dấu cách).

viết đúng cú pháp sẽ có kết quả trả về như bên phải màn hình

3. Giải thích ý nghĩa file docker-compose.yml

  • version: '2': Chỉ ra phiên bản docker-compose sẽ sử dụng.
  • services: Trong mục services, chỉ ra những services (containers) mà ta sẽ cài đặt. Ở đây, chúng ta khai báo hai services tương ứng với 2 containers là db và wordpress.
  • Trong services db:
  • image: chỉ ra image sẽ được sử dụng để create containers. Ngoài ra, bạn có thể viết dockerfile và khai báo lệnh build để containers sẽ được create từ dockerfile (cách này ít người làm).
  • volumes: mount thư mục data trên host (cùng thư mục cha chứa file docker-compose) với thư mục /var/lib/mysql trong container.
  • restart: always: Tự động khởi chạy khi container bị shutdown.
  • environment: Khai báo các biến môi trường cho container. Cụ thể là thông tin cơ sở dữ liệu (tài khoản, mật khẩu, tài khoản người dùng).
  • Trong services wordpress:
  • depends_on: db: Chỉ ra sự phụ thuộc của services wordpress với services db. Tức là services db phải chạy và tạo ra trước, thì services wordpress mới chạy.
  • ports: Expose port 80 của container sang port 8000 trên host machine. (có thể đổi sang port khác, tùy bạn).
  • environment: Khai báo các biến môi trường. Sau khi tạo ra db ở container trên, thì sẽ lấy thông tin đấy để cung cấp cho container wordpress (chứa source code).

4. Chạy Compose

Sau khi chỉnh sửa file cấu hình hoàn tất, chúng ta đến bước chạy compose.

sử dụng command: docker-compose up -d

chạy lệnh docker-compose up -d

Kết quả trên chạy nhanh là vì trước đó mình đã chạy demo một lần rồi, nên nó sẽ không tải lại tài nguyên nữa và chạy rất nhanh, có thể xem ảnh bên dưới để thấy quy trình chạy.

kết quả demo ở thư mục wordpress trước

Truy cập vào đường dẫn: http://localhost:8000 ta được kết quả như sau:

kết quả truy cập link vào cổng 8000

Done, chúng ta đã dựng WordPress thành công.

Một số bài viết liên quan: