First of all it does not has to be the best way but it's the way that works for me and I would like to share it with you.
RUNNING THE SERVICE
Technologies used:
1- Docker more about it.
at the start we need a postgres database server so we create a container using docker.
docker run -d p 5436:5432 -v -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name dev_pg_12 postgres:12
This means we have a pg server exposed at port 5436 so we can access it in localhost:5436
so you want to get on with your life which is running odoo server and develop awesome odoo apps (or you would be wasting your life here my friend 😕)
so you have this project which based on odoo 12 and you have some custom code so you need to create a docker file to tell docker how to create your container.
1 FROM odoo:12.0
2 USER root
3 RUN mkdir /opt/odoo && mkdir /opt/odoo/extra-addons
4 WORKDIR /opt/odoo
5 COPY requirements.txt requirements.txt
6 RUN apt-get update && apt-get install -y python3-pip && pip3 install --no-cache-dir -r requirements.txt
7 RUN chown -R odoo /opt/odoo
What every line means:
1- The first line mean we are going to use odoo:12.0 as the base image so after this step we gonna get all v12 stuff.
2- Switch to the root user (we need the permissions).
3- We need to create directory to store custom modules(you know, what you think you need to add or change in odoo functionality you big shot).
4- Change the working directory (like 'cd' in bash).
5- Copping the requirements file ,I forgot if you have a requirements file for python of course you need to put it at the same directory as the docker file.
6- Just installing the requirements.txt file.
7- Change the owner of the /opt/odoo we created in step 3 cause the service runs with odoo user permissions.
save the file above on with name (Dockerfile) along side requirements.txt file.
if you don't have requirements.txt omit steps 5 and 6.
Now in the same directory open the terminal and run
docker build -t custom_odoo_v12 .
Congratulation you have a working odoo v12 image on your device.
In this step you need to get odoo source, For v12
wget https://nightly.odoo.com/12.0/nightly/tgz/odoo_12.0.latest.zip
now extract it any where in your pc.
and navigate to the odoo directory inside it
the path should be something like
/opt/odoo_12.0.latest/odoo-12.0.post20210215/odoo
next we gonna need an odoo.conf file
let's keep it simple
/etc/odoo.conf
[options]
addons_path = /opt/odoo/extra-addons/
data_dir = /var/lib/odoo
next we gonna run odoo service by creating an odoo container
docker run -p 8082:8069 -v odoo12-dev-web-data:/var/lib/odoo -v path/to/custom/addons:/opt/odoo/extra-addons -v /etc/odoo.conf:/etc/odoo/odoo.conf -v /opt/odoo_12.0.latest/odoo-12.0.post20210215/odoo:/usr/lib/python3/dist-packages/odoo --name odoo12-dev --link dev_pg_12:db -t custom_odoo_v12
what does it means 🤔
1) -p 8082:8069
Mapping odoo port(8069) to port(8082) on the host (your device).
2) -v odoo12-dev-web-data:/var/lib/odoo
Creating a volume to store odoo data (like filestore ...).
3) -v path/to/custom/addons:/opt/odoo/extra-addons
You add the path to your custom addons.
4) -v /etc/odoo.conf:/etc/odoo/odoo.conf
The path to the conf file
5) -v /opt/odoo_12.0.latest/odoo-12.0.post20210215/odoo:/usr/lib/python3/dist-packages/odoo
The path to odoo source (this is optional you need it if you gonna debug the odoo files like set up a debugger or add some print statements 😅).
6) --name odoo12-dev
The name of the container.
7) --link dev_pg_12:db
Linking the PostgreSQL db to odoo as db (this is confusing I know but it's the easiest way to do it 🤷♂️ ).
8) -t custom_odoo_v12
The Image we gonna use.
now you can access the service on HTTP://localhost:8082.
to restart the service and see the log just do
docker restart odoo12-dev && docker logs -f odoo12-dev
MANIPULATING THE DATA:
Technologies used:
1- Odooly get it.
You can always access odoo service via the browser like (chrome , firefox ,...), But some highly repeated processes like upgrading modules or reading data from a model or checking users access rights and rules you may need a faster way to do things.
I personally prefer Odooly it's an amazing tool which I depend on daily.
to access odoo via Odooly you just
odooly --server="http://localhost:8082" -d dev-db-1 -u admin -p admin
there are lots of variations but I prefer this one
then you will be inside Odooly terminal just type help and you will find lots of options like
1- env.install("module_name")
2- env['res.partner'].search([],limit=10)
3- env['hr.employee'].sudo(uid).search([]) #uid of a user
Enjoy...
Top comments (2)
I'm also learning about odoo development too.
But not on docker. I'm developing on my machine.
After I understand most of odoo's concepts. I will develop it on docker too for scaleable.
Thanks for sharing your techniques.
how to set this enviroment with pycharm
or vs code please