Bạn có biết?
Bạn có bao giờ nấu ăn theo công thức chưa? Công thức ghi rõ: nguyên liệu gì, bao nhiêu gam, bước nào trước bước nào sau. Cuối cùng bạn có một món ăn hoàn chỉnh.
Dockerfile cũng giống vậy — nó là "công thức nấu ăn" để tạo ra Docker Image. Bạn viết các bước trong Dockerfile, Docker "nấu" (build) ra Image, rồi từ Image đó chạy Container. Hôm nay chúng ta sẽ học cách viết công thức này!
Dockerfile là gì?
Dockerfile là một file text chứa danh sách các instructions (lệnh hướng dẫn) để build Docker Image. Mỗi dòng trong Dockerfile là một bước trong quá trình tạo Image.
Bạn có thể hình dung:
- Dockerfile = Công thức nấu ăn (blueprint)
- Image = Món ăn hoàn chỉnh (bản sao sẵn sàng dùng)
- Container = Bữa ăn được phục vụ (instance đang chạy)
Cấu trúc Dockerfile cơ bản
Mỗi Dockerfile gồm các instruction chính sau:
FROM — Chọn base image
Đây luôn là dòng đầu tiên. Chọn "nền tảng" để build lên:
FROM node:18-alpine
FROM python:3.11-slim
FROM ubuntu:22.04
Bạn có 3 lựa chọn phổ biến:
- Alpine — nhỏ nhất (~5MB base), bảo mật tốt, phù hợp production
- Slim — nhỏ hơn full, bỏ bớt package không cần thiết
- Full — đầy đủ tool, nhưng nặng hơn nhiều
💡 Mẹo: Ưu tiên dùng Alpine trừ khi cần package đặc biệt.
WORKDIR — Đặt working directory
Giống như cd vào thư mục làm việc. Các lệnh COPY, RUN, CMD sẽ thực thi trong thư mục này:
WORKDIR /app
COPY — Copy files vào Image
Copy file từ máy host vào trong Image:
COPY package.json ./
COPY . .
Dòng đầu copy riêng package.json, dòng thứ hai copy toàn bộ source code.
0 bình luận
Đang tải bình luận...
Để lại bình luận