+2

Dockerize Django Application

Dockerize Django Application

Giới thiệu

Docker là một nền tảng mở dành cho các lập trình viên. Nó giúp ta làm dễ dàng hơn trong việc xây dựng và phát triển ứng dụng. Loại bỏ hoàn toàn câu nói quen thuộc của các lập trình viên Its work on my machine. Docker là một xu hướng đang rất được ưa chuộng trong thời điểm hiện tại.

Django là một web framwork mã nguồn mở phải nói là nổi tiếng nhất của python. Django giúp ta tạo ra một web application một cách dễ dàng và nhanh chóng với vô vàn bộ thư viện đi cùng.

Hôm nay mình xin giới thiệu cách để ta có thể dockerize một ứng dụng Django.

Chuẩn bị

  1. Một chút kiến thức về docker căn bản tại đây Docker
  2. Cài đặt sẵn docker trên máy tính.
  3. Cài sẵn Python3 và Pip.

Start

Đầu tiên chúng ta tạo ra một ứng dụng web Django trước và đặt tên là dockerize.

$ django-admin startproject dockerize

$ cd dockerize

$ python manage.py migrate

alt text

Ta runserver lên

$ python manage.py runserver

Và vào 127.0.0.1:8000 để test 😃

alt text

Tạo file requirements:

$ pip freeze > requirements.txt

Như vậy là đã xong phần Django cơ bản. còn rất nhiều config khác của Django nhưng ta ko nói đến ở đây. Ở đây ta chỉ nói về phần Dockerize thôi.

Tiếp theo là phần chính. Chúng ta tạo ra một Dockerfile. Ta có thể lên Docker Hub hoặc Google để tìm những images mà đã build sẵn Django. Nhưng mình khuyến khích ta tự build image riêng cho mình để phù hợp với từng dự án cụ thể.

Dockerfile ở cùng thư mục với project Django vừa tạo và comment chính là giải thích các lệnh.

FROM python:alpine  				# ta dùng image gốc là python3 trên alpine linux. 
COPY . /code/      					# Copy toàn bộ source code project và vào thư mục /code/ của images
WORKDIR /code						# Thư mục làm việc của shell sau khi init image lên.
ENV PYTHONUNBUFFERED 0   			# thêm biến môi trường vào image.
RUN pip install -r /code/requirements.txt  # cài đặt requirements
MAINTAINER Hung Ha "hahungkk@gmail.com"    # cái này là đánh dấu bản quyền của image.

Sau khi tạo xong Dockerfile. ta cần build thành một image để có thể dùng được.

$ docker build -t dockerize .

alt text

Param -t là ta đặt tên cho image mình vừa build

Vậy là đã build xong một image tên là dockerize có chứa source code và môi trường mà ta có thể dùng đi dùng lại được ở nhiều nơi.

Giờ ta thử bật nó lên xem thế nào.

$ docker run --name docker -v "$PWD":/code -p 8000:8000 -ti dockerize sh -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"

Và vào địa chỉ 127.0.0.1:8000 để hưởng thành quả.

Vậy là ta đã thành công trong việc dockerize một ứng dụng Django. Nhưng còn một số nhược điểm:

  1. các câu lênh của docker để run image lên quá dài và phức tạp nên khó nhớ.
  2. Việc kết hợp các container với nhau theo hướng Microservice.

Trong bài tiếp theo mình sẽ hướng dẫn mọi người dùng docker-compose để giải quyết các vấn đề đó.

Cuối cùng : Thanks for Reading ! ~.~


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí