3. Desarrollando con Odoo (1). XXXXX completar Instalación con Docker simple. Conexion a la BD por sesión y por DBEaver
Seguiremos a Inma Gijón
Utilizaremos docker simple pues docker compose falla.
Ojo: Desinstalar docker (pero no eliminar los volumenes lógicos) y reinstalarlo a la última versión!!!
0. La BD postgres
0.1 Instalar la BD en docker
#1. Crear el contenedor de postgres docker run -d -v odoo-db:/var/lib/postgresql/data --restart="always" -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:latest
Como se puede ver, el usuario es "odoo", el password es "odoo" y la BD "postgres"
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "XXXX" does not exist
Siendo el XXXX el nombre del usuario con el que hemos entrado. Si entramos como root, aprecera role "root".
0.2 Acceder a la BD desde dentro del contenedor en una sesión interactiva
Para evitar el problema accedemos as: primero ejecutamos el contenedor como root y luego, una vez dentro como usuario root ejecutamos psql -U odoo postgres (siendo odoo el usuario y postgres la BD)
#1. Ejecutar una sesion interactiva en el contenedor de postgres docker exec -it --user root 518(3 primeros caracteres) /bin/bash
#2. abrir psql con usuaio odoo sobre la BD postgres
psql -U odoo postgres
#3. Una vez dentro sale el prompt "postgres-#". listamos la BD con \l
postgres-# \l#4. Muestra:Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges -----------+-------+----------+-----------------+------------+------------+------------+-----------+------------------- postgres | odoo | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | prueba | odoo | UTF8 | libc | C | en_US.utf8 | | | prueba01 | odoo | UTF8 | libc | C | en_US.utf8 | | | template0 | odoo | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/odoo + | | | | | | | | odoo=CTc/odoo template1 | odoo | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/odoo + | | | | | | | | odoo=CTc/odoo (5 rows)
# 5. Nos salimos q # 6. Nos conectamos a la bbdd "odoo"postgres=# \c odoo# You are now connected to database "odoo" as user "postgres # 7. Comados para listar # 7.1 \d lista todo todo # 7.2 \dn lista esquems # 7.3 \dt lista tablas # 8. mostrar las tablas y vemos que aprece una llamada res_country_state odoo=# \dt # 9. Ver los campos de una tabla (No olvidar el ";" del final !!! odoo=# select column_name from information_schema.columns where table_name='res_country_state'; # column_name #------------- # id # country_id # create_uid # write_uid # create_date # write_date # name # code #(8 rows) # 10. Ver la información de la provincia de Valencia odoo=# select id, name, code, country_id from res_country_state where code='V'; # id | name | code | country_id #-----+---------------------+------+------------ # 464 | València (Valencia) | V | 68 # 575 | Tierra del Fuego | V | 10 #(2 rows)
Con esto vemos que podemos acceder a la BD sin problemas.
0.3 Acceder a la BD por DBEaver
Vamos ahora a acceder con dbeaver. Para ello vamos a VSCode y vemos la IP del contenedor docker. Nos aseguramos que el contenedor de postgres está en marcha. En Networks-Bridge y en botón derecho inspect vemos la IP que en este caso es 172.17.0.2.
NOTA: La IP de postgres también se puede ver en el log de odoo
2024-05-15 13:03:11,682 1 INFO ? odoo: database: odoo@172.17.0.2:5432
En DBEaver cremos una conexión a postgres con usuario odoo, contraseña odoo y la BD postgres
Ahora en dicha BD creanos un nuevo script SQL que nos muestra las BD
SELECT datname FROM pg_database;
y nos salen las BD mostradas en el punto anterior. (postgres, prueba, template1, template0 y prueba01)
Ahora podemos crear una nueva conexión pero esta vez con la BD "prueba" que es la que nos interesa, y podemos ver toda la información de las tablas
1. Instalar odoo y postgres mediante "simple" docker (sin docker compose)
- config_odoo que guardará el fichero odoo.conf
- dev_addons que es donde se guardaran los módulos a instalar
- log para tener los logs y ver los fallos producidos
Creamos el fichero de configuracion (odoo.conf) dentro de config_odoo
[options] addons_path = /mnt/extra-addons data_dir = /var/lib/odoo csv_internal_sep = , logfile = /var/log/odoo/odoo-server.log
Para los contenedores se crearan discos virtuales de docker no mapeados:
- odoo-db:/var/lib/postgresql/data para postgres
- odoo-data:/var/lib/odoo -->NO!! pues se corrompe facilmente els sistema
Veamos como actuamos desde una consola de comandos para crear los servidores POSTGRES y ODOO en docker. OJO: El contenedor de postgres ya lo hemos instalado en el apartado anterior!
Para crear el contenedor Odoo mapearemos los siguientes discos virtuales:
- /home/eduard/MyDocker/DockerFiles/igijon/odoo-data:/var/lib/odoo
- /home/eduard/MyDocker/DockerFiles/igijon/config_odoo:/etc/odoo
- /home/eduard/MyDocker/DockerFiles/igijon/dev_addons:/mnt/extra-addons
- /home/eduard/MyDocker/DockerFiles/igijon/log:/var/log/odoo
-e ODOO_MASTER_PASS=odoo
#1. Crear el contenedor de postgres(si no lo hemos credo antes) docker run -d -v odoo-db:/var/lib/postgresql/data --restart="always" -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:latest
#2. Crear el contenedor de odoo 16
# y mapear los discos virtuales: /etc/odoo /mnt/extra-addons /var/log/odoo
# y crear un disco virtual para los datos de odoo que no tenga acceso normal odoo-data:/var/lib/odoo
#docker run -d -v odoo-data:/var/lib/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/config_odoo:/etc/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/dev_addons:/mnt/extra-addons -v /home/eduard/MyDocker/DockerFiles/igijon/log:/var/log/odoo -p 8069:8069 --name odoo --link db:db -t odoo:16.0
docker run -d -e ODOO_MASTER_PASS=odoo -v /home/eduard/MyDocker/DockerFiles/igijon/odoo-data:/var/lib/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/config_odoo:/etc/odoo -v /home/eduard/MyDocker/DockerFiles/igijon/dev_addons:/mnt/extra-addons -v /home/eduard/MyDocker/DockerFiles/igijon/log:/var/log/odoo -p 8069:8069 --name odoo --link db:db -t odoo:16.0
Se crearán contenedores y el sistema les dará un nombre. Se usaran los 3 primeros caracteres del contenedor
2. Dar los permisos necesarios
#1. Entrar en el contenedor como root y ejecutando un bash de comandos docker exec -it --user root <nombre_contenedor_creado(solo 3 primeras letras)> bash #2. cambiar los permisos a 777 de los directorios accesibles chmod 777 -R /etc/odoo chmod 777 -R /mnt/extra-addons chmod 777 -R /var/log/odoo
chmod 777 -R /var/lib/odoo
3. Crear un enlace simbólico desde nuestra carpeta de trabajo de VS Code
Ir a VS y en la consola crear un simbolic link a la carpeta de addons de odoo de Inma Gijon. Para ello nos situamos en ~/MyOdoo/Control-Presencia/my-python-programs/GTT y ejecutamos:
# Creamos link
ln -s /home/eduard/MyDocker/DockerFiles/igijon/dev_addons ODOO_IGIJON
siendo ODOO_IGIJON el nombre de la carpeta sibólica
4. Definir la BD
Al inidcar en el navegador http://localhost:8069 se va a la definición de la BD cuya URL es http://localhost:8069/web/database/manager y debemos tener en cuenta que:
- La Master Password es la contraseña que hemos dado al crear el contenedor de Postgres donde dimos usuario="odoo" y password="odoo"
- Cremos una BD nueva que llamamos "ximo-db"
- Crear el usuario que será el administrador con la contraseña de entrada al sistema.
- Dar lenguaje español y si se quiere se cargan datos de prueba.
5. Si no podemos acceder al modo desarrollador.
5. Generar la clave API
5. Instalar aplicaciones que ya lleva odoo
Primero vamos al menu -Ajustes y seleccionar modo desarrollador y despues..
Vamos al menu - Aplicaciones. Pasamos a vista de lista y marcamos:
- contactos
- empleados
- proyecto
- asistencias
- ausencias
6. Instalar de la OCA
Buscar en google "odoo partner second lastname"
seleccionar version 16
Se puede ir al github y descargar o descargar el zip del enlace.
OJO: Creará 2 carpetas dentro de la carpeta que se crea al descomprimir.
Copiar subcarpetas: partner_fisrtname y partner_second_lastname directament dentro de la carpeta addons de odoo
│ └── odoo.conf
├── dev_addons (carpeta addons de Odoo)
│ ├── partner_firstname
│ ├── partner_second_lastname
└── log
Vamos al menú de aplicaciones y ya deben aparecer dichas aplicaciones si:
- Estamos en modo desarrollador (cucaracha)
- Le damos a Actuaizar Lista de Aplicaciones
- Eliminamos el Filtro de aplicaciones (pues són módulos y no aplicaciones)
Si no salen las cosas, hay que rearrancar el contendor de odoo.
Igualmente hay que instalar de la OCA "partner external maps" que permite utilizar Google maps para ver direcciones
7. Crear un nuevo módulo
#1. Entrar en el contenedor como root y ejecutando un bash de comandos docker exec -it --user root <nombre_contenedor_creado> bash #3. Ir al directorio /mnt/extra-addons y ejecutar odoo scaffold ximoapp01 cd /mnt/extra-addons odoo scaffold ximoapp01
Y veremos que se ha creado una carpeta llamada ximoapp01 .
Comentarios
Publicar un comentario