DockerTẬP 008⏱️ Đọc ~2 phút

.dockerignore — Đừng Để node_modules Và Secret Lọt Vào Image

Hầu hết lập trình viên đều quen thuộc với .gitignore, nhưng lại bỏ quên hoặc coi thường file .dockerignore. Hậu quả là build context phình to hàng Gigabyte, thời gian build chậm...

.dockerignore — Đừng Để node_modules Và Secret Lọt Vào Image

Hầu hết lập trình viên đều quen thuộc với .gitignore, nhưng lại bỏ quên hoặc coi thường file .dockerignore. Hậu quả là build context phình to hàng Gigabyte, thời gian build chậm như rùa và nguy hiểm nhất: lộ toàn bộ file bí mật chứa token API vào trong image phát hành ra công chúng!


1. Build Context là gì?

Khi bạn gõ lệnh:

docker build -t myapp .

Dấu chấm . đại diện cho thư mục hiện tại. Trước khi thực hiện bất kỳ lệnh nào trong Dockerfile, Docker CLI sẽ nén toàn bộ thư mục đó và gửi sang Docker Daemon qua socket.

Nếu thư mục của bạn có:
- Thư mục node_modules (500MB)
- Thư mục .git (lưu toàn bộ lịch sử commit, có thể nặng hàng GB)
- File .env chứa mật khẩu production database

Toàn bộ dữ liệu này sẽ bị gửi sang daemon một cách vô ích, làm tốn băng thông và tiềm ẩn nguy cơ bảo mật nghiêm trọng.


2. File .dockerignore chuẩn mẫu cho mọi dự án

Hãy tạo ngay file .dockerignore tại thư mục gốc của repository với nội dung sau:

# Git metadata
.git
.gitignore
.github

# Local dependencies & caches (Bắt buộc phải build lại trong container)
node_modules
npm-debug.log
vendor/
__pycache__/
*.pyc
.venv/
target/

# Sensitive & Secrets (Tuyệt đối không để lọt vào image)
.env
.env.*
*.pem
*.key
id_rsa
credentials.json

# Build artifacts & temp files
dist/
build/
coverage/
.idea/
.vscode/
*.swp
*.log
Dockerfile
.dockerignore

3. Lợi ích đo đếm được ngay lập tức

  1. Tốc độ build tăng gấp 5 lần: Lệnh Sending build context to Docker daemon giảm từ 30 giây xuống còn 0.1 giây.
  2. Layer Caching hoạt động chính xác: Tránh việc chỉnh sửa file README hay file .git làm hỏng cache của lệnh COPY . ..
  3. An toàn bảo mật: Ngăn chặn tuyệt đối việc vô tình copy private key hoặc access token vào image đẩy lên Docker Hub / ECR.
🎬 VIDEO REEL THỰC CHIẾN (TÓM TẮT 60 GIÂY)

Bóc Tách Trực Quan: .dockerignore — Đừng Để node_modules Và Secret Lọt Vào Image

Xem video mô phỏng động trực quan nguyên lý hoạt động và thao tác lệnh thực tế để nắm trọn vẹn kiến thức chỉ trong 60 giây.