Creando un entorno local de Frappe con Docker

Resumen

Guía para levantar un entorno local de frappe framework y desarrollar en local las apps. En la guía se instala la version 13 de Frappe que es la última al día en el momento que se escribió esta guía, donde se mencione a version-13 reemplazar por la más nueva.

Prerequisitos

Para empezar con el desarrollo se necesitan los siguientes requisitos.

  • Docker
  • docker-compose
  • Visual Studio Code

Preparar contenedor para el desarrollo

Clonar y entrar al directorio frappe_docker

git clone https://github.com/frappe/frappe_docker.git
cd frappe_docker

Copiar la configuración ejemplo del devcontainer de la carpeta devcontainer-example a .devcontainer

cp -R devcontainer-example .devcontainer

Usar la extensión de VSCode Remote Containers

Para un desarrollo más sencillo en Frappe Framework recomiendo el uso de VSCode Remote - Containers extension. Primero instalar esta extensión antes de empezar.

Antes de abrir el contenedor, pueden cambiar la base de datos a usar en .devcontainer/docker-compose.yml, por defecto viene configurado con MariaDB pero puede usarse con PostgreSQL.

Una vez instalada la extensión, VSCode les preguntará si desea abrir el contenedor con la configuración dentro de .devcontainer. Una vez en VSCode van a ver los archivos dentro del contenedor y en su terminal ya van a estar dentro del contenedor y ahi mismo recomiendo que vayan trabajando con los comandos de Bench.

Configurar Bench

Correr el siguiente comando dentro de la terminal del contenedor. Puede que necesites abrir una nueva terminal en VSCode

bench init --skip-redis-config-generation --frappe-branch version-13 frappe-bench
cd frappe-bench

Apartir de acá, todos los comandos se ejecutan siempre dentro de la carpeta frappe-bench, sino no va a funcionar.

Configurar hosts

Tenemos que decirle a bench que use los contenedores correctos en lugar de localhost. Correr el siguiente comando dentro del cotenedor.

bench set-mariadb-host mariadb
bench set-redis-cache-host redis-cache:6379
bench set-redis-queue-host redis-queue:6379
bench set-redis-socketio-host redis-socketio:6379

Editar archivo Procfile

Abrir el archivo Procfile y quitar las tres lineas que contienen la configuración de Redis, ya sea manualmente o corriendo el siguiente comando:

sed -i '/redis/d' ./Procfile

Crear un nuevo sitio con bench

Se puede crear un nuevo sitio con el siguiente comando:

bench new-site sitename --no-mariadb-socket

sitename DEBE terminar con .localhost para hacer deploy locales.

Ejemplo:

bench new-site mysite.localhost --no-mariadb-socket

El comando pedirá la clave del usuario root de MariaDB. La clave por defecto es 123. También te pedirá que definas la clave del usuario Administrator que se usará para logearse en Frappe.

Esto creará un nuevo sitio y un directorio mysite.localhost dentro de frappe-bench/sites.

La opción --no-mariadb-socket configurará las credenciales de la base de datos del site para que funcionen con docker.
Si querés ingresar por navegador con mysite.localhost tenés que hacer las configuraciones correspondientes en /etc/host si estás en Linux o el equivalente de Windows.

Establecer el modo desarrollador de bench en el nuevo sitio

Para desarrollar una nueva app, él último paso será poner el site en developer mode. La documentación está disponible en este link.

bench --site mysite.localhost set-config developer_mode 1
bench --site mysite.localhost clear-cache

Crear una nueva app

Para crear una nueva app hay que correr el siguiente comando:

bench new-app sample_app

sample_app es un ejemplo. Los nombre de las apps deben llevar _ para separar sus palabras.

El comando irá pidiendo los siguientes campos para rellenar.

App Name: sample_app
App Title: Sample App
App Description: This is a sample app.
App Publisher: Acme Inc.
App Icon: icon-linux
App Color: #6DAFC9
App Email: [email protected]
App URL: http://example.com
App License: MIT

Por último, para instalar la app en el site hay que correr el siguiente comando:

bench --site mysite.localhost install-app sample_app

Para más información detallada sobre las apps de Frappe tienen el siguiente link de la documentación.

Instalar una app

También se pueda instalar una app ya existente. Previamente debe estar en un repositorio git.

En el siguiente ejemplo se descarga una app y luego se instala en el site.

bench get-app myapp https://github.com/myusername/myapp.git
bench --site mysite.localhost install-app myapp

Arrancar Frappe

Ejecutar el siguiente comando dentro del directorio frappe-bench.

bench start

Ahora podés logearte con el usuario Administrator y el password que hayas registrado cuando creaste el site.
Tu sitio ahora será accesible desde localhost:8000 o si configuraste tu etc/host la url que le hayas definido.

Arrancar manualmente el contenedor

En caso de que no uses VSCode, podés arrancar el contenedor de forma manual con el siguiente comando:

Corriendo los contenedores

docker-compose -f .devcontainer/docker-compose.yml up -d

Y entrar al shell del contenedor de desarrollo con el siguiente comando:

docker exec -e "TERM=xterm-256color" -w /workspace/development -it devcontainer_frappe_1 bash

Y luego es repetir los pasos detallados más arriba en la sección Configurar Bench

21