Para ejecutar el Joko Backend, se debe crear la base de datos en el servidor PostgreSQL Para eso, el proyecto incluye las herramientas basadas en Liquibase
El liquibase es un programa hecho en Java, que puede ser ejecutado desde la línea de comando, o como un plugin de maven. Describimos a continuación las instrucciones para ejecutarlas desde unos scripts proveidos por el proyecto.
Se debe configurar el archivo "development.vars", que servirá para la ejecucion de liquibase. Este es un archivo bash que debe tener dos variables:
- MVN_SETTINGS: Archivo de configuracion de perfil Maven. En caso de utilizar
el Artifactory interno, sería el recien descargado. Ej.
$HOME/.m2/settings.xml
puede utilizar de ejemplo el archivo que se encuentra ensrc/main/resources/settings.xml.example
copiando a$HOME/.m2/settings.xml
PROFILE_DIR
: Directorio de perfil creado en el punto inicial. Ej./opt/starter-kit
Un ejemplo de este archivo se encuenta en src/main/resources/development.vars
.
Se recomienda que este archivo esté fuera del workspsace en el directorio
padre de los PROFILE_DIR. Ejemplo: /opt/starter-kit/
.
Exportar variable, desde la terminal:
$ export ENV_VARS="/opt/starter-kit/development.vars"
Obs.: El truco es tener varios archivos profile.vars
y cada uno apuntando a
un PROFILE_DIR
diferente.
1.- Crea la schema de cero.
$ ./scripts/updater fresh
2.- Inicializa datos básicos (o reinicializa)
$ ./scripts/updater seed src/main/resources/db/sql/seed-data.sql
$ ./scripts/updater seed src/main/resources/db/sql/seed-config.sql
OJO:
-
El parámetro
fresh
elimina la base de datos que está configurada en elapplication.properties
y la vuelve a crear desde cero con la última versión del schema -
Los parámetros
seed <file>
cargan datos indicados en el archivo<file>
, para los casos en que se ejecutefresh
siempre debe ir seguido de unseed
con el archivo que (re)inicializa los datos básicos del sistema -
Los datos básicos del sistema estan en dos archivos:
seed-data.sql
: Todos la configuracion base que es independiente al ambiente
[ambiente]-config
. Por ejemplo: dev-config.sql
. Posee los parametros de configuracion adecuados para el ambiente de desarrollo. Tambien existe qa-config
y prod-config
3.- Liquibase permite tener una evulución del modelo siguiendo las reglas para su changelog, y para correr el liquibase en modo de actualización ejecute:
$ ./scripts/updater update
Más detalles en la documentación del Liquibase.
OBS. Se recomienda este metodo, ya que con STS habria que hacer ciertas configuraciones extras para ejecutar desde ahi. Queda a eleccion del lector. En caso de que se quiera volver a tener el servidor con las configuraciones default en el PostgreSQL, se deja unas instrucciones a continuación.
A partir de este punto, cada vez que se decida levantar y bajar el servidor del Backend, se deben ejecutar los siguientes comandos en la terminal desde la carpeta del proyecto joko backend starter-kit:
$ export ENV_VARS="/opt/starter-kit/development.vars"
$ ./scripts/updater fresh
$ ./scripts/updater seed src/main/resources/db/sql/seed-data.sql
$ ./scripts/updater seed src/main/resources/db/sql/seed-config.sql
$ export SPRING_CONFIG_LOCATION=/opt/starter-kit/dev/application.properties
$ mvn -Dext.prop.dir=/opt/starter-kit/dev spring-boot:run