Ngày 06 trên 12

Đóng hộp, dựng cổng

Cùng một build trên mọi máy, đứng sau một cánh cửa thật

Bạn có thể… vào cuối ngày

  • Giải thích image và container, lớp (layer), và registry.
  • Viết một Dockerfile và docker-compose.yml cho stack của bạn.
  • Giữ dữ liệu SQLite trên một volume để nó sống qua mỗi lần khởi động lại.
  • Cấu hình nginx vừa là web server vừa là reverse proxy, và kết thúc TLS.
Sản phẩm

Một stack chạy trong Docker, đứng sau nginx — một file compose dựng lên tất cả.

Móc nối toàn cảnh

Ô “APP” giờ là một container, và nginx là cánh cửa chính. Nhưng cánh cửa này chưa có tên — đó là chuyện ngày mai.

Khái niệm bạn sẽ hiểu gì

  • Container: gói code + đúng dependencies + config vào một image bất biến; chạy nó thành container. Tái lập, cách ly, mang đi được.
  • Dockerfile: FROM, WORKDIR, COPY, RUN, EXPOSE, CMD — build một lần, chạy khắp nơi.
  • Volume: file SQLite phải nằm trên volume, nếu không tạo lại là mất. Quên điều này = mất dữ liệu.
  • Docker Compose: khai báo service, port, volume — docker compose up -d / down.
  • nginx, cánh cửa chính: cấu trúc config, server block (virtual host), root/index/location/try_files, vòng lặp an toàn nginx -t → reload.
  • Reverse proxy + TLS: location /api/ { proxy_pass … }, app ẩn ở localhost, và kết thúc HTTPS ở cửa.

Thực hành thực chiến, kết bằng thứ đang chạy

  1. Container hóa: viết Dockerfile cho app Flask và một compose file có volume cho DB.
  2. Chứng minh tái lập: docker compose down, rồi up -d — hành vi như cũ, dữ liệu còn nguyên.
  3. nginx static vhost: serve frontend của bạn cho một host, nginx -t, reload.
  4. Reverse proxy: trỏ location /api/ vào app ở localhost; test luồng đầy đủ.

Muốn định dạng khác? Mọi định dạng