Skip to content

Docker images for production and development setups of the Frappe framework and ERPNext

License

Notifications You must be signed in to change notification settings

julianmartinezlero/frappe_docker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,649 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Implementación de Frappe y ERPNext en Contenedores Docker

Build Stable Build Develop

Este documento presenta una guía académica y técnica para la implementación de Frappe y ERPNext en entornos basados en contenedores Docker. Su propósito es facilitar la instalación, configuración y despliegue de estas plataformas tanto en entornos de desarrollo como de producción.


1. Requisitos previos

Antes de iniciar, asegúrese de contar con los siguientes componentes instalados y configurados en su sistema:

Para obtener información detallada sobre buenas prácticas y fundamentos, consulte la documentación oficial de Docker.


2. Preparación del entorno

Clone el repositorio oficial del proyecto frappe_docker y acceda al directorio correspondiente:

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

El archivo principal de configuración es pwd.yml, el cual contiene parámetros relevantes para el despliegue. Se recomienda revisarlo cuidadosamente antes de proceder.


3. Configuración del dominio

3.1. Ajuste de dominio en la creación del sitio

Por defecto, el archivo pwd.yml incluye el valor frontend como dominio por defecto. Si desea configurar un dominio propio, como por ejemplo midominio.pe, modifique la sección de creación del sitio de la siguiente forma:

create-site:
    ...
    command:
      ...
      bench new-site --mariadb-user-host-login-scope='%'
      --admin-password=admin
      --db-root-username=root 
      --db-root-password=admin 
      --install-app erpnext
      --set-default midominio.pe;

3.2. Ajuste de la variable de entorno del frontend

Además, debe actualizar el valor de la variable de entorno FRAPPE_SITE_NAME_HEADER en la sección correspondiente al frontend:

frontend:
    ...
    environment:
      ...
      FRAPPE_SITE_NAME_HEADER: midominio.pe

⚠️ Nota importante: El dominio configurado no debe incluir los prefijos http:// ni https://.


4. Despliegue del entorno

Ejecute el siguiente comando para levantar los servicios:

docker compose -f pwd.yml up -d

El proceso de creación del sitio ERPNext puede tardar entre 3 y 5 minutos. Se recomienda monitorear los logs del contenedor encargado de la creación del sitio:

docker compose -f pwd.yml logs -f create-site

Una vez completado, podrá acceder al sistema a través del puerto 8080 de su servidor:

  • Usuario: Administrator
  • Contraseña: admin

5. Consideraciones adicionales

5.1. Publicación en producción

Para entornos de producción, se recomienda utilizar un servidor proxy inverso como Nginx o Apache. Este debe redirigir el tráfico entrante desde su dominio público hacia el contenedor que ejecuta Frappe/ERPNext. Ejemplo con Nginx:

server {
    listen 80;
    server_name midominio.pe;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /socket.io/ {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://localhost:8080/socket.io/;
    }
}

5.2. Configuración del correo electrónico

El correcto funcionamiento de los módulos de notificación requiere configurar un servidor SMTP. Para ello, es necesario habilitar en el servidor los puertos adecuados (dependiendo del proveedor de correo), tales como: 25, 465, 587, o 993.

5.3. WebSockets y Socket.IO

ERPNext utiliza WebSockets a través de Socket.IO para gestionar comunicaciones en tiempo real (por ejemplo, notificaciones y actualización dinámica de datos). Por ello, es fundamental que el servidor proxy permita conexiones persistentes en la ruta /socket.io/, como se mostró en la configuración de Nginx.

5.4. Seguridad

  • Utilizar certificados SSL mediante Certbot o servicios de gestión de certificados (ejemplo: Let's Encrypt).
  • Configurar reglas de firewall estrictas para exponer únicamente los puertos necesarios.
  • Mantener los contenedores y dependencias actualizadas.

6. Autenticación y acceso

Para el primer acceso al sistema, las credenciales por defecto son:

  • Usuario: Administrator
  • Contraseña: admin

Es altamente recomendable cambiar la contraseña de administrador inmediatamente después de la primera autenticación.


7. Mantenimiento y actualización

  • Reiniciar servicios en caso de error:

    docker compose -f pwd.yml restart
  • Actualizar imágenes del contenedor:

    docker compose -f pwd.yml pull
    docker compose -f pwd.yml up -d --build
  • Verificar estado de contenedores:

    docker ps

8. Acceso a la base de datos

Para acceder a la base de datos tiene dos opciones:

  • Conectandose a travez de un cliente de base de datos que soporte MySql/MariaDB con opciones de SSH mediante al puerto expuesto por el contenedor (revisar el archivo pwd.yml puerto expuesto por defecto 3306).

  • Entrando directamente al contenedor ej:

    # listar los contenedores 
    $ sudo docker ps -a
    # identificar el contenedor de mariadb 
    $ 6242343232  mariadb:10.6   "docker-entrypoint.s…"
    # acceder a el por su id en este caso 6242343232
    $ sudo docker exec -it  6242343232 /bin/bash
    # una vez dentro se puede usar los comandos
    # basicos para conectarse con el cliente de mysql
    
    $ mysql -u root -p 
    # luego le pedira la contraseña revise
    # el archivo pwd.yml las secciones donde
    # se especifican las credenciales de
    # acceso a la base de datos.
    MariaDB [(none)]> show databases; # listar bases de datos
      +--------------------+
      | Database           |
      +--------------------+
      | _5e5899d8398b5f7b  |
      | information_schema |
      | mysql              |
      | performance_schema |
      | sys                |
      +--------------------+
      6 rows in set (0.002 sec)
    # usar la base de datos.
    MariaDB [(none)]> use _5e5899d8398b5f7b; 
    # listar las tablas en la base de datos
    MariaDB [_5e5899d8398b5f7b]> show tables; 
      +---------------------------------------------------+
      | Tables_in__5e5899d8398b5f7b                       |
      +---------------------------------------------------+
      | __Auth                                            |
      | __UserSettings                                    |
      | __global_search                                   |
      | bisect_nodes_id_seq                               |
    ``
    

9. Autoría del documento


Este documento está diseñado con fines académicos y prácticos, buscando proveer una guía clara, estructurada y segura para la implementación de Frappe/ERPNext en contenedores Docker.

Referencias

About

Docker images for production and development setups of the Frappe framework and ERPNext

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 46.6%
  • Dockerfile 36.5%
  • Shell 10.5%
  • HCL 6.4%