4.1 Lệnh docker compose up
Lệnh docker compose up
là lệnh chính của Docker Compose, giúp bạn chạy các ứng dụng multi-container được định nghĩa trong file compose.yaml
. Nó tự động tạo và chạy tất cả các dịch vụ được liệt kê trong cấu hình, thiết lập mạng và gắn kết volumes. Trong bài giảng này, chúng ta sẽ xem kỹ cách sử dụng lệnh docker compose up
, các tham số chính và các thực hành tốt nhất.
Chức năng chính của lệnh docker compose up
- Tạo và chạy container: lệnh
docker compose up
tạo và chạy tất cả các container được chỉ định trong phầnservices
của filecompose.yaml
. - Thiết lập mạng và volumes: Docker Compose tự động tạo các mạng cần thiết và gắn kết các volumes được chỉ định trong cấu hình.
- Chạy dịch vụ song song: tất cả các dịch vụ được khởi chạy song song, giúp tăng tốc quá trình chạy các ứng dụng multi-container.
- Giám sát log: lệnh xuất log của tất cả các container đang chạy theo thời gian thực, giúp bạn theo dõi trạng thái và phát hiện nhanh các vấn đề.
Cú pháp của lệnh docker compose up
docker compose up [options] [SERVICE...]
Ở đây:
-
[options]
: các tham số bổ sung để cấu hình hành vi của lệnh (ví dụ,--detach
,--build
,--scale
). -
[SERVICE...]
: (không bắt buộc) danh sách các dịch vụ cần chạy. Nếu không được chỉ định, tất cả các dịch vụ sẽ được chạy.
4.2 Ví dụ docker compose up
Ví dụ về cách sử dụng lệnh docker compose up
:
1. Khởi chạy tất cả các dịch vụ
Khởi chạy tất cả các dịch vụ được định nghĩa trong file compose.yaml
:
docker compose up
2. Khởi chạy một dịch vụ cụ thể
Khởi chạy một dịch vụ cụ thể, ví dụ web
:
docker compose up web
3. Chạy ở chế độ nền
Để khởi chạy tất cả các dịch vụ ở chế độ nền, hãy sử dụng tùy chọn -d
(detached mode):
docker compose up -d
Khi sử dụng tùy chọn này, lệnh sẽ kết thúc ngay sau khi khởi chạy các container và chúng sẽ chạy ở chế độ nền.
4.3 Các tham số của lệnh docker compose up
Các tham số hữu ích của lệnh docker compose up
:
1. Tham số --build
Tham số này yêu cầu Docker Compose xây dựng lại các image trước khi khởi chạy các container. Rất hữu ích nếu bạn đã thực hiện thay đổi trong source code hoặc Dockerfile.
docker compose up --build
2. Tham số --force-recreate
Tham số --force-recreate
yêu cầu Docker Compose tạo lại các container ngay cả khi cấu hình của chúng không thay đổi.
docker compose up --force-recreate
3. Tham số --no-recreate
Tham số --no-recreate
ngăn không cho tạo lại các container đã tồn tại, ngay cả khi cấu hình của chúng đã thay đổi.
docker compose up --no-recreate
4. Tham số --remove-orphans
Tham số này xóa các container không được định nghĩa trong file compose.yaml
hiện tại nhưng đã được tạo bởi các lần chạy Docker Compose trước đó.
docker compose up --remove-orphans
5. Các tham số -V
, --renew-anon-volumes
Các tham số này yêu cầu Docker Compose tạo lại các anonymous volume thay vì sử dụng lại chúng.
docker compose up -V
4.4 Ví dụ và khuyến nghị
Các ví dụ sử dụng lệnh docker compose up
với các tùy chọn khác nhau:
Ví dụ 1: chạy ứng dụng với việc build lại image
Ví dụ này sẽ build lại các image trước khi chạy container, điều này hữu ích nếu bạn đã thực hiện thay đổi trong mã nguồn hoặc Dockerfile.
docker compose up --build
Ví dụ 2: chạy ở chế độ nền và tái tạo container
Ví dụ này sẽ chạy các container ở chế độ nền và tái tạo chúng ngay cả khi cấu hình không thay đổi.
docker compose up -d --force-recreate
Ví dụ 3: chạy một dịch vụ cụ thể và xóa container không cần thiết
Ví dụ này sẽ chỉ chạy dịch vụ web
và xóa các container không được định nghĩa trong tệp compose.yaml
hiện tại.
docker compose up web --remove-orphans
Khuyến nghị thực tế
1. Sử dụng tệp .env
Bạn có thể sử dụng tệp .env
để định nghĩa các biến môi trường sẽ được sử dụng trong compose.yaml
. Điều này giúp quản lý cấu hình và đơn giản hóa quá trình triển khai ở các môi trường khác nhau.
2. Log và giám sát
Khi bạn chạy container bằng lệnh docker compose up
, tất cả log sẽ được hiển thị ở console. Điều này giúp bạn theo dõi tình trạng của dịch vụ và nhanh chóng xử lý các vấn đề phát sinh. Để giám sát chi tiết hơn, sử dụng các lệnh docker compose logs
và docker compose ps
.
3. Tự động hóa build và triển khai
Tích hợp lệnh docker compose up
vào các script tự động hóa hoặc pipeline CI/CD giúp tự động hóa quá trình build và triển khai ứng dụng đa container. Ví dụ, bạn có thể cấu hình Jenkins hoặc GitHub Actions để tự động build, deploy và chạy docker compose up
mỗi khi mã code được cập nhật.
GO TO FULL VERSION