Hướng dẫn tạo app Django thông qua Docker Compose

Tram Ho

Lời mở đầu

Hồi trước, khi tôi mới tập tành code thì được phân ngay vào làm trong 1 dự án thực tế, chân ướt chân ráo chả biết cái gì nên lúc đầu chỉ có ngồi vọc Docker, Django, …Nhưng vướng cái phần tiếng Anh lẹt đẹt nên chả hiểu dùng thế nào, sau thì vừa cày vừa hỏi các đàn anh mới thông được tí. Vì vậy hôm nay tôi xin phép viết một bài hướng dẫn cách tạo app django qua docker-compose bằng tiếng Việt 😄.

Định nghĩa các thành phần trong dự án

Việc hoàn thành một dự án mất rất nhiều thời gian và công sức, mà làm xong đưa cho khách hàng vẫn FAIL 😢 . Lý do đa phần là do môi trường code khác với môi trường của khách hàng. Cho nên Docker ra đời như một công cụ deploy.

Vì tôi dùng hệ điều hành Linux, cụ thể là Ubuntu 16.04, nên các bạn dùng Window, Mac thông cảm (bow).

Cài đặt Docker và Docker Compose

Việc đầu tiên các bạn cần làm là install Docker và Compose.

  1. Thêm GPG key từ trang chủ Docker về máy bạn

  1. Thêm Docker repo vào apt của thằng ubuntu

  1. Cập nhật lại apt

  1. Kiểm tra phiên bản mà bạn muốn install phải từ Docker repo chứ không phải bản có sẵn của Ubuntu

Docker-ce chưa được install nhưng có bản dự phòng của ubuntu.

  1. Nếu OK, install Docker nào

  1. Sau khi install thì kiểm tra trạng thái của docker

Nếu bạn thấy active (running) thì là chạy rồi đấy, còn lại thì đừng để ý do mình copy code từ trang hướng dẫn. Chung quy do lười 😕.

  1. Docker chạy rồi, giờ install docker-compose thôi. Download phiên bản ổn định của docker-compose trên github.

  1. Cấp quyền

  1. Kiểm tra phiên bản

Dockerfile

Bạn tạo một empty folder, truy cập vào đấy

Tạo một file tên là Dockerfile để tạo image trong docker. Nói chung là môi trường của dự án, có format như sau

Dockerfile bắt đầu bằng một image đã xây dựng môi trường có sẵn là “ubuntu:16.04”.

Sau đó, cài đặt python3

Tạo folder trong image container

Nếu bạn có 1 file requirements (nơi chứa các thư viện cần của dự án) thì copy vào folder code trong container

Khi tạo image sẽ install các thư viện trong file requirement này luôn nên nếu dự án của bạn cần cái gì thì nhét vào file requirement này nhé. Ví dụ:

Docker-compose.yml

Bạn tạo thêm 1 file docker-compose.yml song song với Dockerfile. File này có vai trò mô tả các dịch vụ sẽ sử dụng trong dự án, cụ thể ở đây là web và database.

Phiên bản sử dụng ở đây là 3

Service 1 là db aka database. Ở đây tôi sử dụng postgres nên sẽ pull image postgres về (bản mới nhất), đặt tên cho container là “test_django_app_db”

Service 2 là web. Đặt tên container, build context, ánh xạ folder trong container ra bên ngoài local ( ở đây là test_django_app) để khi bạn code ở local nó sẽ lưu vào container ngay lập tức, command chạy ngay khi build docker-compose ( python ./test_django_app/manage.py runserver 0.0.0.0:8000 ), expose port ( mặc định là 8000), depends_on db ( liên kết với dịch vụ db).

Django app

Trong folder test_django_app, tạo một django project

Kiểm tra, nếu các bạn thấy tên project tức là các bạn thành công rồi (thực ra tôi chỉ copy hướng dẫn thôi 😄)

Connect App to Database

Trong file test_django_app/settings.py, config lại biến DATABASE

Cuối cùng bạn chạy lệnh “docker-compose up” trong folder test_django_app để tạo dự án.

Kiểm tra xem container đã được tạo ra hay chưa

Lời nói cuối

Viết mỏi cả tay 😕, trên đây là hướng dẫn đơn giản của tôi để tạo 1 app django bằng docker. Bài không đi sâu chi tiết vào lý thuyết, uhm nếu khi nào tâm huyết dâng trào có lẽ tôi sẽ viết một bài giải thích các thuật ngữ trong docker 😄.

Link tham khảo từ:

https://docs.docker.com/compose/django/

https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-16-04

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo