21
Creando un entorno local de Frappe con Docker
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.
Para empezar con el desarrollo se necesitan los siguientes requisitos.
- Docker
- docker-compose
- Visual Studio Code
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
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.
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.
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
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
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.
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
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.
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
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.
En caso de que no uses VSCode, podés arrancar el contenedor de forma manual con el siguiente comando:
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