forked from TDTP/admin_transporte_backend
actualizacion de readme.md
parent
09ce9cc8a8
commit
ad740af3d0
265
readme.md
265
readme.md
|
@ -1,64 +1,177 @@
|
|||
|
||||
# Dependencias
|
||||
# Estructura de carpetas
|
||||
|
||||
* **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
|
||||
Se recomienda la siguiente estructura de carpeta para iniciar proyecto
|
||||
|
||||
~~~txt
|
||||
/app
|
||||
|-- /transporte
|
||||
| |-- (codigo del proyecto backend)
|
||||
|
|
||||
|-- /dumps
|
||||
| |-- (respaldos de la base de datos transporte)
|
||||
|
|
||||
|-- /proto
|
||||
| |-- (codigo del proyecto)
|
||||
|
|
||||
|-- docker-compose.yml
|
||||
|-- restore_db.sh
|
||||
~~~
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
# Docker
|
||||
|
||||
Para iniciar la aplicacion usando docker
|
||||
|
||||
~~~bash
|
||||
cd <carpeta del proyecto>/docker
|
||||
cd /app
|
||||
docker compose up -d
|
||||
~~~
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
# Proyectos involucrados
|
||||
|
||||
# Script para levantar aplicacion python
|
||||
## Transporte
|
||||
|
||||
**start.sh**
|
||||
Ref: https://gitlab.com/m3f_usm/admin_transporte/backend
|
||||
|
||||
~~~bash
|
||||
## Proto
|
||||
|
||||
Ref: https://gitlab.com/m3f_usm/proto
|
||||
|
||||
## Respaldos de base de datos
|
||||
|
||||
Ver información en:
|
||||
|
||||
https://gitlab.com/m3f_usm/admin_transporte/backend/-/wikis/Databases
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
# archivo: restore_db.sh
|
||||
|
||||
~~~sh
|
||||
#!/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
|
||||
# obtener el ultimo respaldo de la carpeta
|
||||
LASTFILEDUMP=$(ls -t /dumps/*.sql.gz | sort -r | head -n 1)
|
||||
echo "FILE: $LASTFILEDUMP"
|
||||
|
||||
# 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
|
||||
# restaurar la base datos
|
||||
gunzip -c "$LASTFILEDUMP" | psql -U postgres "$POSTGRES_DB"
|
||||
~~~
|
||||
|
||||
|
||||
# file: docker-compose.yml
|
||||
# archivo produccion: docker-compose.yml
|
||||
|
||||
~~~yml
|
||||
version: '3'
|
||||
name: transporte
|
||||
|
||||
services:
|
||||
|
||||
backend:
|
||||
image: python:3.11-alpine
|
||||
depends_on:
|
||||
- db
|
||||
environment:
|
||||
- PORT=4000
|
||||
- DBHOST=db
|
||||
- DBPORT=5432
|
||||
- DBNAME=transporte
|
||||
- DBSCHEMA=public
|
||||
- DBUSER=postgres
|
||||
- DBPASS=password
|
||||
- DB_REDIS_HOST=dbproto
|
||||
- DB_REDIS_PORT=6379
|
||||
- SECRET_JWT="kf6Jc!f30Z!1k1N0#!%#"
|
||||
ports:
|
||||
- 4000:4000
|
||||
volumes:
|
||||
- ./transporte:/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
|
||||
- ./dumps:/dumps
|
||||
- ./restore_db.sh:/docker-entrypoint-initdb.d/02_restore_db.sh
|
||||
ports:
|
||||
- 5432:5432
|
||||
environment:
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_DB: transporte
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
|
||||
proto:
|
||||
image: python:3.11-alpine
|
||||
environment:
|
||||
- DB_REDIS_HOST=dbproto
|
||||
- DB_REDIS_PORT=6379
|
||||
- TZ=America/Santiago
|
||||
volumes:
|
||||
- ./proto:/app
|
||||
- venv_proto:/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 ;
|
||||
[ -f .env ] || ( [ -f .env.develop ] && cp .env.develop .env ) ;
|
||||
watch -n 30 -t python main.py
|
||||
"
|
||||
|
||||
dbproto:
|
||||
image: redis:7.2-alpine
|
||||
|
||||
|
||||
volumes:
|
||||
db:
|
||||
venv:
|
||||
venv_proto:
|
||||
~~~
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
# tunnel para desarrollo
|
||||
|
||||
Ver información en:
|
||||
|
||||
https://gitlab.com/m3f_usm/admin_transporte/backend/-/wikis/home
|
||||
|
||||
|
||||
# archivo desarrollo: docker-compose.yml
|
||||
|
||||
~~~yml
|
||||
version: '3'
|
||||
|
@ -74,7 +187,7 @@ services:
|
|||
- 3000:3000
|
||||
environment:
|
||||
- VITE_PORT=3000
|
||||
- VITE_BACKEND=/api
|
||||
- VITE_BACKEND=http://localhost:4000/api
|
||||
working_dir: /app
|
||||
command: sh -c "
|
||||
[ ! -d node_modules ] && npm install ;
|
||||
|
@ -84,22 +197,24 @@ services:
|
|||
|
||||
backend:
|
||||
image: python:3.11-alpine
|
||||
depends_on:
|
||||
- db
|
||||
environment:
|
||||
- PORT=4000
|
||||
- DBHOST=db
|
||||
- DBPORT=5432
|
||||
- DBNAME=database
|
||||
- DBSCHEMA=desarrollo1
|
||||
- DBNAME=transporte
|
||||
- DBSCHEMA=public
|
||||
- DBUSER=postgres
|
||||
- DBPASS=password
|
||||
- DB_REDIS_HOST=dbproto
|
||||
- DB_REDIS_PORT=6379
|
||||
- SECRET_JWT="kf6Jc!f30Z!1k1N0#!%#"
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
- venv:/root/venv
|
||||
ports:
|
||||
- 4000:4000
|
||||
volumes:
|
||||
- ./transporte:/app
|
||||
- venv:/root/venv
|
||||
working_dir: /app
|
||||
command: sh -c "
|
||||
[ -d /root/venv/bin ] || ( \
|
||||
|
@ -117,31 +232,43 @@ services:
|
|||
python project/manage.py runserver 0.0.0.0:$$PORT
|
||||
"
|
||||
extra_hosts:
|
||||
- dbproto:<IP_TUNNEL>
|
||||
- db:<direccion ip de tu computador>
|
||||
|
||||
db:
|
||||
#image: postgis/postgis:14-3.4-alpine
|
||||
image: postgres:14-alpine-geometry
|
||||
volumes:
|
||||
- db:/var/lib/postgresql/data
|
||||
- ./backups:/backups
|
||||
#- ./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
|
||||
|
||||
adminer:
|
||||
image: adminer
|
||||
environment:
|
||||
ADMINER_DEFAULT_SERVER: db
|
||||
ADMINER_DEFAULT_USER: postgres
|
||||
ADMINER_DEFAULT_PASSWORD: password
|
||||
ADMINER_DESIGN: lucas-sandery
|
||||
|
||||
volumes:
|
||||
db:
|
||||
venv:
|
||||
~~~
|
||||
|
||||
|
||||
# Script para levantar aplicacion python sin docker
|
||||
|
||||
## file: start.sh
|
||||
|
||||
~~~bash
|
||||
#!/bin/sh
|
||||
cd /app
|
||||
|
||||
# si no existe directorio de ambiente, se crea
|
||||
if [ ! -d /root/venv ]; then
|
||||
python -m venv /root/venv
|
||||
. /root/venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
fi
|
||||
|
||||
# activar ambiente con dependencias
|
||||
. /root/venv/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
|
||||
~~~
|
Loading…
Reference in New Issue