0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Docker Hóa và Triển Khai Ứng Dụng Python

Đăng vào 7 tháng trước

• 4 phút đọc

Giới thiệu

Trong thế giới phát triển phần mềm ngày nay, Docker đã trở thành một công cụ không thể thiếu cho việc triển khai ứng dụng. Bài viết này sẽ hướng dẫn bạn cách docker hóa và triển khai một ứng dụng Python một cách hiệu quả và đơn giản nhất.

Mục lục

  1. Tạo Dockerfile
  2. Xây dựng Docker Image
  3. Chạy Docker Container
  4. Kiểm tra Ứng Dụng
  5. Thực Hành Tốt Nhất
  6. Những Cạm Bẫy Thường Gặp
  7. Mẹo Tối Ưu Hiệu Suất
  8. Giải Quyết Sự Cố

1. Tạo Dockerfile

Bước đầu tiên là tạo một Dockerfile trong thư mục /python_app. Tệp này chứa các hướng dẫn để xây dựng hình ảnh Docker.

bash Copy
[tony@stapp01 python_app]$ sudo vi Dockerfile

Nội dung tệp mà tôi sử dụng là:

dockerfile Copy
# Sử dụng hình ảnh Python 3.9 slim làm cơ sở
FROM python:3.9-slim

# Thiết lập thư mục làm việc bên trong container
WORKDIR /app

# Sao chép tệp requirements.txt từ thư mục src/
COPY src/requirements.txt .

# Cài đặt các phụ thuộc
RUN pip install --no-cache-dir -r requirements.txt

# Sao chép mã nguồn ứng dụng từ thư mục src/
COPY src/ .

# Mở cổng 3003
EXPOSE 3003

# Chạy tệp server.py khi container bắt đầu
CMD ["python", "server.py"]

Quy trình này là tiêu chuẩn để thiết lập một ứng dụng Python bên trong một container Docker.

2. Xây dựng Docker Image

Tiếp theo, chúng ta cần xây dựng hình ảnh Docker bằng cách sử dụng lệnh docker build. Lệnh này sử dụng Dockerfile trong thư mục hiện tại (.) để tạo một hình ảnh mang tên nautilus/python-app.

bash Copy
[tony@stapp01 python_app]$ docker build -t nautilus/python-app .

Kết quả xác nhận quá trình xây dựng thành công, hiển thị từng bước từ Dockerfile được thực thi:

bash Copy
[+] Building 196.3s (10/10) FINISHED
 => [internal] load build definition from Dockerfile
 => [internal] load metadata for docker.io/library/python:3.9-slim
 => [internal] load .dockerignore
 => [1/5] FROM docker.io/library/python:3.9-slim
 => [internal] load build context
 => [2/5] WORKDIR /app
 => [3/5] COPY src/requirements.txt .
 => [4/5] RUN pip install --no-cache-dir -r requirements.txt
 => [5/5] COPY src/ .
 => exporting to image
 => => exporting layers
 => => writing image sha256:99f9bcece2819a222881e87b93f5779d9fa4cde460c25cb9a06f1d6c91c8f746
 => => naming to docker.io/nautilus/python-app

3. Chạy Docker Container

Khi hình ảnh đã được xây dựng, chúng ta có thể chạy một container từ nó. Lệnh docker run được sử dụng để tạo và khởi động một container. Cờ -d chạy container ở chế độ nền, --name đặt tên cho container, và -p ánh xạ cổng của container đến cổng của máy chủ.

bash Copy
[tony@stapp01 python_app]$ docker run -d --name pythonapp_nautilus -p 8092:3003 nautilus/python-app

Kết quả là ID của container, xác nhận rằng nó đã khởi động thành công:

bash Copy
e3c4697f371922f35dbb84d9077d73f64283918b481ee92bff184dff7c0683d7

4. Kiểm tra Ứng Dụng

Cuối cùng, hãy kiểm tra khả năng truy cập của ứng dụng. Đầu tiên, kiểm tra trên máy chủ nơi container đang chạy.

bash Copy
[tony@stapp01 /]$ curl http://localhost:8092/
Welcome to xFusionCorp Industries!

Phản hồi "Welcome to xFusionCorp Industries!" xác nhận rằng ứng dụng đang chạy và có thể truy cập được trên stapp01.

Tiếp theo, kiểm tra từ một máy khác (jumphost) để xác nhận khả năng truy cập mạng. Bạn phải sử dụng tên máy chủ hoặc địa chỉ IP của máy chủ (stapp01) thay vì localhost.

bash Copy
thor@jumphost ~$ curl http://stapp01:8092/
Welcome to xFusionCorp Industries!

Kết quả cuối cùng xác nhận rằng ứng dụng đã được triển khai thành công và có thể truy cập từ một máy chủ bên ngoài.

5. Thực Hành Tốt Nhất

  • Sử dụng multi-stage builds: Giúp giảm kích thước hình ảnh cuối cùng bằng cách chỉ sao chép những gì cần thiết từ các bước xây dựng khác.
  • Cập nhật thường xuyên: Đảm bảo rằng bạn thường xuyên cập nhật các hình ảnh Docker để bảo mật và hiệu suất.

6. Những Cạm Bẫy Thường Gặp

  • Quên mở cổng: Đảm bảo rằng cổng mà ứng dụng của bạn sử dụng đã được mở trong Dockerfile và được ánh xạ đúng cách.
  • Không cài đặt đúng các phụ thuộc: Kiểm tra kỹ tệp requirements.txt để đảm bảo rằng tất cả các phụ thuộc cần thiết đã được khai báo.

7. Mẹo Tối Ưu Hiệu Suất

  • Sử dụng cache: Docker sử dụng cache cho các bước xây dựng, vì vậy hãy sắp xếp các lệnh sao cho những lệnh ít thay đổi nằm ở trên cùng.
  • Giảm kích thước hình ảnh: Sử dụng các hình ảnh cơ sở nhẹ như python:3.9-slim để giảm kích thước hình ảnh Docker.

8. Giải Quyết Sự Cố

  • Container không khởi động: Kiểm tra log của container bằng lệnh docker logs <container_id> để tìm hiểu nguyên nhân.
  • Không truy cập được ứng dụng: Đảm bảo rằng firewall không chặn cổng và kiểm tra kết nối mạng.

Kết luận

Docker hóa và triển khai ứng dụng Python là một quy trình đơn giản nhưng mạnh mẽ. Bằng cách làm theo các bước này, bạn có thể triển khai ứng dụng của mình một cách nhanh chóng và hiệu quả. Hãy bắt đầu khám phá sức mạnh của Docker ngay hôm nay và nâng cao quy trình phát triển phần mềm của bạn! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại ý kiến dưới bài viết này.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào