This project and video series are best practices for Backend Engineering with Python and Django and the most common technologies every backend engineer should know. Technologies used in this course are listed below.
- Python 3.x - Programming Language
- Django 2.2.x - Powerful Web Framework
- Django Rest Framework - Web API's
- Jinja2 - Template Engine
- Gunicorn - WSGI HTTP Server
- PostgreSQL - PostgreSQL Database
- NginX - High performance web server
- Docker - Container Platform
- ArvanCloud - Integrated Cloud Infrastructure
- GitHub - Version Control
- TravisCI - Continues Integration and Deployment
- Postman - API Testing
First clone or download this project.
$ git clone https://github.com/saelozahra/jahadeabresani/
Then create docker network and volumes as below.
$ docker volume create abresani_postgresql
$ docker volume create abresani_static_volume
$ docker volume create abresani_files_volume
$ docker network create nginx_network
$ docker network create abresani_network
You need to create .env file in the project root file with default values.
POSTGRES_USER=*******
POSTGRES_PASSWORD=**********
POSTGRES_DB=********
Now run django and postgresql with docker-compose.
$ docker-compose up -d
Then run nginx container with docker-compose.
$ cd config/nginx/
$ docker-compose up -d
You can see JahadeAbresani web page on https://localhost, Template and API's are accessable by docker containers which you can see with below command.
$ docker ps -a
Output should be like this.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc6cc9d6d3d7 nginx_nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp nginx
05103904dcb8 ae80efb17475 "gunicorn --chdir bl…" 2 hours ago Up 2 hours 0.0.0.0:8000->8000/tcp abresani
4a183e90a9eb postgres:10 "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:5432->5432/tcp abresani_postgresql
nginx container as common web server, JahadeAbresani container as django application and abresani_postgresql as postgreSQL database container.
Contributions are welcome and will be fully credited. I'd be happy to accept PRs for template extending.
This project is licensed under the MIT License - see the LICENSE file for details