2023-12-05 10:34:47 -03:00
|
|
|
|
|
|
|
# Dependencias
|
|
|
|
|
|
|
|
* **Django**: framework django
|
|
|
|
* **psycopg2-binary**: permite uso de base datos postgres
|
|
|
|
* **djangorestframework**: permite crear rest api json
|
|
|
|
* **django-cors-headers**: requerido para desarrollo de frontend, permite acceso desde una dominio distinto al backend
|
|
|
|
* **django-filter**: permite filtrar resultado usando paraquetros en querystring
|
|
|
|
* **coreapi**: genera documentación de rest api
|
|
|
|
* **python-decouple**: lee archivo .env para variables de ambiente
|
|
|
|
* **PyJWT**: permite generar json-web-token
|
|
|
|
* **pymongo**: permite conectarse a base datos mongo
|
|
|
|
* **Pillow**: permite imagenar imagenes
|
|
|
|
* **openpyxl**: permite generar archivos excel
|
|
|
|
|
|
|
|
# Docker
|
|
|
|
|
|
|
|
Para iniciar la aplicacion usando docker
|
|
|
|
|
|
|
|
~~~bash
|
|
|
|
cd <carpeta del proyecto>/docker
|
|
|
|
docker compose up -d
|
|
|
|
~~~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Script para levantar aplicacion python
|
|
|
|
|
|
|
|
**start.sh**
|
|
|
|
|
|
|
|
~~~bash
|
|
|
|
#!/bin/sh
|
|
|
|
cd /app
|
|
|
|
|
|
|
|
# si no existe directorio de ambiente, se crea
|
|
|
|
if [ ! -d /app/libs ]; then
|
|
|
|
python -m venv libs
|
|
|
|
. ./libs/bin/activate
|
|
|
|
pip install -r requirements.txt
|
|
|
|
fi
|
|
|
|
|
|
|
|
# activar ambiente con dependencias
|
|
|
|
. ./libs/bin/activate
|
|
|
|
|
|
|
|
# si no existe un proyecto inicial, lo crea
|
|
|
|
if [ ! -d /app/project ]; then
|
|
|
|
django-admin startproject project
|
|
|
|
fi
|
|
|
|
|
|
|
|
# iniciar servidor con puerto 8000
|
|
|
|
python /app/project/manage.py runserver 0.0.0.0:8000
|
|
|
|
~~~
|
|
|
|
|
|
|
|
# Extraer models de base de datos
|
|
|
|
|
|
|
|
~~~bash
|
|
|
|
python manage.py inspectdb > api/models.py
|
|
|
|
~~~
|
|
|
|
|
2023-12-05 11:08:11 -03:00
|
|
|
|
|
|
|
# file: docker-compose.yml
|
|
|
|
|
|
|
|
~~~yml
|
|
|
|
version: '3'
|
|
|
|
name: transporte
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
frontend:
|
|
|
|
image: node:18-alpine
|
|
|
|
volumes:
|
|
|
|
- ./frontend:/app
|
|
|
|
environment:
|
|
|
|
- VITE_PORT=3000
|
|
|
|
- VITE_BACKEND=/api
|
|
|
|
working_dir: /app
|
|
|
|
command: sh -c "
|
|
|
|
[ ! -d node_modules ] && npm install ;
|
|
|
|
chmod -R o+w . ;
|
|
|
|
npm run dev
|
|
|
|
"
|
|
|
|
|
|
|
|
backend:
|
|
|
|
image: python:3.11-alpine
|
|
|
|
environment:
|
|
|
|
- PORT=4000
|
|
|
|
- DBHOST=db
|
|
|
|
- DBPORT=5432
|
|
|
|
- DBNAME=database
|
|
|
|
- DBSCHEMA=desarrollo1
|
|
|
|
- DBUSER=postgres
|
|
|
|
- DBPASS=password
|
|
|
|
- SECRET_JWT="kf6Jc!f30Z!1k1N0#!%#"
|
|
|
|
volumes:
|
|
|
|
- ./backend:/app
|
|
|
|
- venv:/root/venv
|
|
|
|
working_dir: /app
|
|
|
|
command: sh -c "
|
|
|
|
[ -d /root/venv/bin ] || ( \
|
|
|
|
python -m venv /root/venv/ \
|
|
|
|
&& . /root/venv/bin/activate \
|
|
|
|
&& pip install -r requirements.txt \
|
|
|
|
) ;
|
|
|
|
|
|
|
|
. /root/venv/bin/activate ;
|
|
|
|
|
|
|
|
cd /app ;
|
|
|
|
[ -d project ] || django-admin startproject project ;
|
|
|
|
[ -f .env ] || ( [ -f .env.develop ] && cp .env.develop .env ) ;
|
|
|
|
chmod -R o+w project/ ;
|
|
|
|
python project/manage.py runserver 0.0.0.0:$$PORT
|
|
|
|
"
|
|
|
|
|
|
|
|
db:
|
|
|
|
image: postgis/postgis:14-3.4-alpine
|
|
|
|
volumes:
|
|
|
|
- db:/var/lib/postgresql/data
|
|
|
|
- ./20231112_database.sql.gz:/backups/01_dump.sql.gz
|
|
|
|
# - ./backend/docs/database/01_create_tables.sql:/docker-entrypoint-initdb.d/01_create_tables.sql
|
|
|
|
ports:
|
|
|
|
- 5436:5432
|
|
|
|
environment:
|
|
|
|
POSTGRES_PASSWORD: password
|
|
|
|
POSTGRES_DB: database
|
|
|
|
PGDATA: /var/lib/postgresql/data/pgdata
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
db:
|
|
|
|
venv:
|
|
|
|
~~~
|