Đào tạo doanh nghiệpVibe Coding Sang Production: Kiến Trúc Bền Vững, Bảo Mật Hardening, CI/CD Gatekeeper & Docker Chống Sập Cho AI Apps
5/9

Giáo trình tự học miễn phí · Dịch vụ hỗ trợ theo nhu cầu.

Bài 0535phút ước tínhThực chiến · Chuyên sâu

5. Đóng Gói Docker Chuẩn Production: Multi-Stage Build, User Non-Root & Xử Lý Tín Hiệu PID 1

Tối ưu hóa Dockerfile cho môi trường thực tế: Cấu trúc Multi-stage 4 tầng siêu nhẹ (~100MB), phân quyền user non-root chống leo thang đặc quyền, và tích hợp dumb-init xử lý graceful shutdown.

🐳 4 Tầng Của Multi-Stage Dockerfile Chuẩn

graph TD
A["Stage 1: Base (Alpine Linux siêu nhẹ)"] --> B["Stage 2: Dependencies (Cài đặt Packages & Lockfile)"]
B --> C["Stage 3: Builder (Biên dịch Code & Prune DevDependencies)"]
C --> D["Stage 4: Runner (Non-root appuser + dumb-init + Healthcheck)"]

#### Các Điểm Kỹ Thuật Cốt Lõi:

  1. User Non-root (appuser:nodejs UID 1001): Ngăn chặn hacker chiếm quyền điều khiển server nếu ứng dụng có lỗ hổng RCE.
  2. Xử lý tín hiệu PID 1 (dumb-init): Giúp container tiếp nhận đúng tín hiệu SIGTERM để đóng kết nối database an toàn khi restart.
  3. Tích hợp HEALTHCHECK: Cho phép reverse proxy nhận biết container bị treo để tự động chuyển tiếp luồng truy cập.
example.py
# DOCKERFILE MULTI-STAGE CHUẨN PRODUCTION CHO PYTHON FLASK
FROM python:3.12-alpine AS base
WORKDIR /app
RUN apk add --no-cache libpq dumb-init curl

# Stage Builder
FROM base AS builder
RUN apk add --no-cache gcc musl-dev postgresql-dev
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt

# Stage Runner (Non-Root)
FROM base AS runner
WORKDIR /app
ENV PATH=/home/appuser/.local/bin:$PATH
ENV PYTHONUNBUFFERED=1

RUN addgroup -g 1001 -S appgroup && adduser -u 1001 -S appuser -G appgroup
COPY --from=builder --chown=appuser:appgroup /root/.local /home/appuser/.local
COPY --chown=appuser:appgroup . .

USER appuser
EXPOSE 5000

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3   CMD curl -f http://localhost:5000/healthz || exit 1

ENTRYPOINT ["dumb-init", "--"]
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "3", "app:app"]
Thực hành

Thực hành và tự đánh giá

Xây dựng một file Dockerfile Multi-stage cho dự án của bạn, build thử nghiệm và kiểm tra tiến trình đang chạy dưới user non-root.

🏢 BẠN MUỐN TRIỂN KHAI CHO CẢ PHÒNG BAN / DOANH NGHIỆP?
Đề Xuất Công Ty Tài Trợ & Đào Tạo In-House Trọn Gói

AI Tinh Gọn hỗ trợ khảo sát hiện trạng, kèm 1-1 on-premise bảo mật dữ liệu, setup hạ tầng riêng và xuất hóa đơn VAT hợp pháp cho doanh nghiệp.

⚖️ Bản quyền sở hữu trí tuệ: © 2026 AI Tinh Gọn (aitinhgon.vn) · Giấy phép Creative Commons CC BY-NC-ND 4.0. Cho phép tự học cá nhân, nghiêm cấm thương mại hóa hoặc bán lại. Giáo trình mở →

Tiến độ tự học lưu trên trình duyệt này. Chỉ đánh dấu khi đã kiểm tra sản phẩm thực hành.