Để bắt đầu một dự án Django mới, bạn cần sử dụng lệnh django-admin
. Lệnh này cho phép bạn tạo thư mục dự án và một số tệp cơ bản cho ứng dụng Django của bạn. Ví dụ: nếu bạn muốn tạo một dự án có tên my_project
, bạn có thể chạy lệnh này trong terminal của mình:
django-admin startproject my_project
├──
Tệp manage.py
là tập lệnh cho phép bạn thực hiện nhiều tác vụ khác nhau cho dự án của mình, chẳng hạn như chạy máy chủ phát triển, tạo di chuyển cơ sở dữ liệu và kiểm tra mã của bạn. Thư mục project/
chứa các tập tin cài đặt và cấu hình cho dự án của bạn.
Tệp settings.py
xác định các cài đặt chính cho dự án của bạn, chẳng hạn như kết nối cơ sở dữ liệu, ứng dụng đã cài đặt và phần mềm trung gian. Tệp urls.py
ánh xạ các URL của dự án tới các chế độ xem ứng dụng của bạn.
python manage.py runserver
manage.py
: Tập lệnh cung cấp nhiều lệnh khác nhau để quản lý dự án của bạn, chẳng hạn như tạo ứng dụng, di chuyển cơ sở dữ liệu và kiểm tra mã của bạn.
project/
: Một thư mục chứa các tập tin cài đặt và cấu hình cho dự án của bạn. Các tập tin chính trong thư mục này là:
`settings.py`: A file that defines the main settings for your project, such as the database connection, the installed apps, and the middleware. You can customize this file to suit your needs and preferences. `urls.py`: A file that maps the URLs of your project to the views of your apps. You can define different URL patterns for different parts of your web application.
apps/
: Một thư mục chứa tất cả các ứng dụng Django tạo nên dự án của bạn. Mỗi ứng dụng Django là một gói Python riêng biệt cung cấp chức năng hoặc tính năng cụ thể cho ứng dụng web của bạn. Bạn có thể tạo ứng dụng của riêng mình hoặc sử dụng các ứng dụng hiện có từ nguồn của bên thứ ba.
python manage.py runserver
python manage.py test
Ran 1 test in 0.001s Ok
FROM python:3.9 #Install Django and other required packages RUN pip install django # Copy the Django project files into the image COPY ./app # Set the working directory WORKDIR /app # Start the Django development server CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
version: "3.9" services: web: build: ports: -"8000:8000" volumes -./:/app db: image: postgres:14.0-alpine volumes: -./postgres:/var/lib/postgresql/data
Tệp docker-compose.yml này xác định hai dịch vụ: web
và db
. Dịch vụ web
sẽ xây dựng hình ảnh Docker từ Dockerfile mà chúng ta đã tạo ở phần trước. Dịch vụ web
cũng sẽ hiển thị cổng 8000 trên máy chủ để chúng tôi có thể truy cập máy chủ phát triển Django.
Dịch vụ db
sẽ sử dụng hình ảnh Docker PostgreSQL chính thức. Dịch vụ db
cũng sẽ gắn thư mục postgres
trên máy chủ vào thư mục /var/lib/postgresql/data
bên trong vùng chứa. Điều này sẽ đảm bảo rằng các tệp cơ sở dữ liệu được duy trì giữa các lần khởi động lại vùng chứa.
docker-compose up -d
Bạn cũng có thể đăng nhập vào trang quản trị Django tại //localhost:8000/admin/
. Tên người dùng và mật khẩu mặc định là admin
và admin
.
- Đi tới trang hồ sơ của bạn và nhấp vào nút Mới bên cạnh Kho lưu trữ .
- Đặt tên cho kho lưu trữ của bạn, chẳng hạn như django-docker-app
và tùy ý thêm mô tả.
- Bấm vào nút Tạo kho lưu trữ .
- Đi tới thư mục dự án Django của bạn trong thiết bị đầu cuối và nhập git status
để xem trạng thái hiện tại của kho lưu trữ của bạn. Bạn sẽ thấy một cái gì đó như thế này:
On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt no changes added to commit (use "git add" and/or "git commit -a")
Điều này có nghĩa là bạn có một số tệp đã sửa đổi không được sắp xếp để thực hiện cam kết. Để sắp xếp chúng cho cam kết, bạn cần sử dụng lệnh git add
.
- Gõ git add
. để sắp xếp tất cả các tệp đã sửa đổi cho cam kết. Ngoài ra, bạn có thể chỉ định tên tệp mà chúng tôi muốn phân đoạn, chẳng hạn như git add
Dockerfile docker-compose.yml
requirements.txt
.
- Gõ lại git status
để xem trạng thái cập nhật của kho lưu trữ của chúng tôi. Bạn sẽ thấy một cái gì đó như thế này:
On branch main Your branch is up to date with 'origin/main'. Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt
Điều này có nghĩa là bạn có một số thay đổi được sắp xếp để thực hiện cam kết. Để cam kết chúng, bạn cần sử dụng lệnh git commit
.
- Nhập git commit -m "Add Docker configuration files"
để thực hiện các thay đổi theo giai đoạn kèm theo thông báo mô tả những gì chúng tôi đã làm. Ngoài ra, bạn có thể bỏ qua cờ -m
và nhập tin nhắn dài hơn vào trình chỉnh sửa sẽ mở sau khi nhập git commit
.
- Gõ lại git status
để xem trạng thái cuối cùng của kho lưu trữ của chúng ta. Bạn sẽ thấy một cái gì đó như thế này:
On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean
Điều này có nghĩa là bạn có một cam kết chưa được đẩy tới kho lưu trữ từ xa. Để đẩy nó, bạn cần sử dụng lệnh git push
.
- Gõ git push origin main
để đẩy cam kết cục bộ của bạn tới kho lưu trữ từ xa trên GitHub.
Ngoài ra, bạn có thể chỉ định tên từ xa và tên nhánh mà bạn muốn đẩy, chẳng hạn như git push origin main
.
- Vào và nhấn vào nút Đăng ký .
- Điền đầy đủ các thông tin được yêu cầu như tên, email, mật khẩu,.. - Chọn ngôn ngữ phát triển chính, chẳng hạn như Python.- Bấm vào nút Tạo tài khoản miễn phí .
- Kiểm tra email của chúng tôi và nhấp vào liên kết để xác minh tài khoản của chúng tôi.
- Mở terminal và gõ heroku --version
để xác minh rằng quá trình cài đặt đã thành công. Bạn sẽ thấy một cái gì đó như thế này:
heroku/7.59.0 win32-x64 node-v12.21.0
- Đi tới thư mục dự án Django của bạn trong terminal và nhập heroku login
để đăng nhập vào tài khoản Heroku của bạn bằng công cụ Heroku CLI. Bạn có thể được yêu cầu nhập email và mật khẩu hoặc sử dụng trình duyệt web để xác thực chính mình.
- Gõ heroku create django-docker-app
để tạo một ứng dụng Heroku mới với tên django-docker-app
. Ngoài ra, bạn có thể bỏ qua tên và để Heroku tạo một tên ngẫu nhiên cho bạn. Bạn sẽ thấy một cái gì đó như thế này:
Creating ⬢ django-docker-app... done //django-docker-app.herokuapp.com/ | //git.heroku.com/django-docker-app.git
- Nhập heroku config:set SECRET_KEY=<your_secret_key>
để đặt biến môi trường cho cài đặt SECRET_KEY của dự án Django của chúng ta. Bạn cần thay thế <your_secret_key>
bằng một chuỗi ngẫu nhiên mà bạn có thể tạo bằng cách sử dụng công cụ như .
Ngoài ra, bạn có thể sử dụng khóa bí mật hiện có trong tệp settings.py của mình nhưng điều này không được khuyến khích vì lý do bảo mật.
- Nhập heroku addons:create heroku-postgresql:hobby-dev
để thêm tiện ích bổ sung cơ sở dữ liệu PostgreSQL miễn phí vào ứng dụng Heroku của bạn. Điều này sẽ tạo cơ sở dữ liệu mới cho dự án Django của bạn và đặt biến môi trường cho cài đặt DATABASE_URL của dự án Django của bạn. Bạn sẽ thấy một cái gì đó như thế này:
Creating heroku-postgresql:hobby-dev on ⬢ django-docker-app... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-curved-12345 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation
Điều này có nghĩa là bạn đã thêm tiện ích bổ sung cơ sở dữ liệu PostgreSQL với tên PostgreSQL-curved-12345 và URL DATABASE_URL .
- Nhập heroku config
để xem danh sách các biến môi trường mà bạn đã đặt cho ứng dụng Heroku của mình. Bạn sẽ thấy một cái gì đó như thế này:
=== django-docker-app Config Vars DATABASE_URL: postgres://<username>: <password>@<host>:<port>/<database> SECRET_KEY: <your_secret_key>
Điều này có nghĩa là bạn có hai biến môi trường, DATABASE_URL và SECRET_KEY , mà bạn có thể sử dụng trong cài đặt dự án Django của mình.
Làm cách nào để triển khai dự án Django của bạn lên Heroku bằng lệnh ` heroku
?
Để triển khai dự án Django của chúng tôi tới Heroku bằng lệnh heroku
, bạn cần làm theo các bước sau:
- Đi tới thư mục dự án Django của bạn trong thiết bị đầu cuối và nhập heroku container:login
để đăng nhập vào Sổ đăng ký vùng chứa Heroku bằng công cụ Heroku CLI. Điều này sẽ cho phép bạn đẩy hình ảnh Docker của chúng tôi tới Heroku.
- Gõ heroku container:push web -a django-docker-app
để xây dựng và đẩy hình ảnh Docker của bạn tới Heroku. Bạn cần chỉ định tên ứng dụng Heroku của mình, trong trường hợp này là django-docker-app . Bạn sẽ thấy một cái gì đó như thế này:
=== Building web (Dockerfile) Sending build context to Docker daemon 1.024kB Step 1/9 : FROM python:3.9-slim ---> 7f5b6ccd03e9 Step 2/9 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 64b5d0e40a22 Step 3/9 : RUN mkdir /code ---> Using cache ---> 4d8c638f2b6c Step 4/9 : WORKDIR /code ---> Using cache ---> e69c02a028cd Step 5/9 : COPY requirements.txt /code/ ---> Using cache ---> 8f0f3e0f2d8c Step 6/9 : RUN pip install -r requirements.txt ---> Using cache ---> 0f7b497d81ed Step 7/9 : COPY . /code/ ---> Using cache ---> c0a8e9a32b16 Step 8/9 : EXPOSE 8000 ---> Using cache ---> a1d36a4a2da4 Step 9/9 : CMD ["gunicorn", "django_docker.wsgi", "--bind", "0.0.0.0:8000"] ---> Using cache ---> f7f3c0418a1d Successfully built f7f3c0418a1d Successfully tagged registry.heroku.com/django-docker-app/web:latest === Pushing web (Dockerfile) The push refers to repository [registry.heroku.com/django-docker-app/web] f7f3c0418a1d: Pushed latest: digest: sha256:6cbbf22cf6aa60e0343e6d8e7c4c2eeb2e cb8fd5e82a42dfe5f4aeeb15af89ec size: 528 Your image has been successfully pushed. You can now release it with the 'container:release' command.
- Nhập heroku container:release web -a django-docker-app
để phát hành hình ảnh Docker cho ứng dụng Heroku của chúng tôi. Bạn sẽ thấy một cái gì đó như thế này:
Releasing images web to django-docker-app... done
- Gõ heroku run python manage.py migrate -a django-docker-app
để chạy quá trình di chuyển cơ sở dữ liệu trên ứng dụng Heroku của bạn. Điều này sẽ tạo các bảng và chỉ mục cần thiết cho dự án Django của bạn trên cơ sở dữ liệu PostgreSQL. Bạn sẽ thấy một cái gì đó như thế này:
Running python manage.py migrate on ⬢ django-docker-app... up, run.1234 (Free) Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions, polls Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying polls.0001_initial... OK Applying sessions.0001_initial... OK
- Nhập heroku open -a django-docker-app
để mở ứng dụng web đã triển khai của chúng tôi trong trình duyệt web. Bạn sẽ thấy dự án Django của chúng tôi chạy trên Heroku.
Bạn đã triển khai thành công dự án Django của mình tới Heroku bằng lệnh heroku
. Bây giờ bạn có thể thưởng thức ứng dụng web của mình và chia sẻ nó với người khác.
Đọc tiếp: CI/CD rất cần thiết để phân phối phần mềm nhanh chóng và đáng tin cậy. Để tối ưu hóa quy trình CI/CD của bạn để đạt hiệu quả tối đa, hãy chọn công cụ phù hợp, hợp lý hóa quy trình làm việc của bạn, sử dụng thử nghiệm và QA tự động, song song hóa các bản dựng, sử dụng vòng giám sát và phản hồi, thực hiện kiểm tra bảo mật và liên tục cải thiện quy trình của bạn. Đọc thêm
Đọc thêm: Mọi thứ chúng tôi đã học được tại DockerCon 2023 Đọc thêm