- Notifications
You must be signed in to change notification settings - Fork76
odoocker/odoocker
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Welcome to Odoocker, a game-changer in the world of Odoo Development and Deployment. This tool is meticulously crafted to revolutionize your experience with Odoo, ensuring simplicity, efficiency, and a top-tier development journey. And while it’s rooted in the principles of the Official Odoo Docker setup, it goes several steps beyond.
Whether you're using theCommunity orEnterprise edition, thisDocker solution is tailored just for you.
Best part of this? You don't need any prior knowledge ofDocker,Odoo or any technology that involves this Framework. We stick to Docker philosophy:Use it, then learn about it.
Feel free to post a Pull Request to continue enhancing this project.
- 🌐Universal: Suitable for both Odoo Community and Enterprise editions.
- 📦Easy Setup: Clone, configure
.env
file, and you're ready to deploy. - 🔒Secure: Automatic SSL certificate renewal to keep your data safe (for production only).
In essence, Odoocker isn't just another tool, it's a philosophy. So, whether you’re a seasoned Odoo veteran or just starting your journey, Odoocker is here to make your journey easier.
- Clone and Configure:
git clone git@github.com:odoocker/odoocker.gitcd odoockercp .env.example .env && cp docker-compose.override.local.yml docker-compose.override.yml
- Hosts & Domains: To ensure everything runs smoothly, remember to add the necessary domains to your hosts file.
ForUnix:
echo '127.0.0.1 erp.odoocker.test' | sudo tee -a /etc/hostsecho '127.0.0.1 pgadmin.odoocker.test' | sudo tee -a /etc/hosts
ForWindows, manually add these lines to C:\Windows\System32\drivers\etc\hosts:
127.0.0.1 erp.odoocker.test127.0.0.1 pgadmin.odoocker.test
The environment variables located in.env
provide dynamic configurations to Odoo and the project in general.Theodoo.conf
file is generated by theodoorc.sh
script based on the environment variables.
This file is divided in sections, you most likely are going to focus on theMain Configuration
section. This provides quick access to project andodoo.conf
variables. The rest of section are container specific variables for different container. (Note: you may findrepeated variables likeSUPPORT_EMAIL=${SUPPORT_EMAIL}
which interacts with different containers. This is to explicitly denote in the.env
file that this variable is being shared through those containers.
Sample.env
file:
# OdooAPP_ENV=debugINIT=UPDATE=my_custom_addonLOAD=base,webWORKERS=2DEV_MODE=reload,qwebDOMAIN=erp.odoocker.test# Enterprise (GitHub User with access to Odoo Enterprise [https://github.com/odoo/enterprise] Repo)# If not present, Odoo Community will be brought up.GITHUB_USER=odoockerGITHUB_ACCESS_TOKEN=ghp_token# DatabaseADMIN_PASSWD=odooDB_HOST=postgres (container or external host)DB_PORT=5432DB_NAME=my-odoo-dbDB_USER=odooDB_PASSWORD=odooLOAD_LANGUAGE=es_MX...
odoo/entrypoint.sh
file is the gateway for our Odoo container. Depending on theAPP_ENV
and the rest of the environment variables, it determines how to start the Odoo service (like local, testing, production, etc.) with different configurations.
In all environments,odoo.conf
follows the.env
file variables. Some environments may have command-line parameter to overwrite certain configurations.
To bring up all the environments run:
docker-compose up -d --build && docker-compose logs odoo
Restart addingdown
:
docker-compose down && docker-compose up -d --build && docker-compose logs odoo
These environments (APP_ENV=fresh
orAPP_ENV=restore
) will have no database created. Are perfect for setting up afresh database instance orrestoring a production database.
This environment (APP_ENV=local
) will strictly follow the.env
variables with no command-line overwrites. You'll most likely be using this regularly.UseDEV_MODE=reload,qweb
to activate hot reload when changingpython
andxml
files.
If you prefer to update the packages everytime you restart Odoo container, you can setUPDATE=module1,module2,module3
.
This environment (APP_ENV=debug
) works same way as local, but it starts Odoo using thedebugpy
library. Thanks to our.vscode/launch.json
, if you are usingVisual Studio Code, you can start a Debugger session so the container is aware of your breakpoints and stop wherever you need. This ismy favorite environment to work since I use the debugger a lot while developing.
This environment (APP_ENV=testing
) is specific for running tests(and will be included in a CI/CD pipeline in a future version). It help us test the modules we are developing to ensure a safe deployment.
Atest_DB_NAME
database is automagically created.TheADDONS_TO_TEST=addon_1
are installed in that fresh DB.UseTEST_TAGS=test_tag_1
to filter your tests.
NOTE: Avoid running tests without tags; otherwise, it will trigger tests in all installed addons and we don't want this. For now, let's assume Odoo Community & Enterprise tests passed and only focus on the things you need to test.
This environment (APP_ENV=full
) will install theINIT
modules in a new or existingDB_NAME
. It allows us to have a fresh production database replica.
This environment (APP_ENV=staging
) setsUPDATE=all
; it allows us toupdate all installed addons at once.
It also allows to install new packages before the upgrade throughINIT
.
It's highly recommended to use this command to run this environment
docker-compose down && docker-compose pull && docker-compose build --no-cache && docker-compose up -d && docker-compose logs -f odoo
This willpull
the latestOdoo Community, Enterprise, Extra and Custom addons, basically, itupgrades the whole Odoo instance to the newest. Additionally, it will also pull the latest images of the other containers in this project. This environment is perfect for deployments.
NOTE: Do not bring down & up again, unless you want to perform a whole upgrade again.
This environment (APP_ENV=production
) ensures no demo data is loaded, debugging and dev_mode are turned off. It also brings up theLet's Encrypt
container, so you won't worry aboutSSL Certificates
anymore! Some.env
variables are overwritten in this setup.
- Take down previous setup of containers
docker-compose down
- Replace the
docker-compose.override.yml
withdocker-compose.override.production.yml
to bringLet's Encrypt
container.
cp docker-compose.override.production.yml docker-compose.override.yml
- Update .env
SERVICES
(addacme
) andACME_CA_URI
(use production link). - Make sure the DNS record of your
DOMAIN
is pointing to your server. - Rebuild the containers
docker-compose up -d --build && docker-compose logs odoo
The following tips will enhance your developing and production experience.
If you are usingVisual Studio Code
& theDocker Extension is installed, you can open the Odoo Container in theROOT_PATH
. There you will find all OdooCommunity Addons
,Enterprise Addons
,Extra Addons
andCustom Addons
in the same folder level.
Using the Search Panel will allow you to look at every single reference of what you are looking for in the whole Odoo Instance and not just in your addons.
alias odoo='cd odoocker'alias hard-deploy='docker-compose down && git pull && docker-compose pull && docker-compose build --no-cache && docker-compose up -d && docker-compose logs -f odoo'alias deploy='docker-compose down && git pull && docker-compose up -d --build && docker-compose logs -f --tail 2000 odoo'alias logs='docker-compose logs -f --tail 2000 odoo'
...without having atested backed up
database
Have in mind that dropping volumes will destroy DB data, Odoo Conf & Filestore,Let's Encrypt certificates, and more! If you execute this command several times inprod
in a short period of time, you may reach the `Let's Encrypt certificates limit`` and Odoocker won't be able to generate new ones afterseveral hours.
- Log into the odoo container
docker-compose exec odoo bash
- Start Odoo shell running:
odoo shell --http-port=8071
- Log into the odoo container
docker-compose exec -u root odoo
- Navigate to custom addons folder inside the container
cd /usr/lib/python3/dist-packages/odoo/custom-addons
- Create new addons running:
odoo scaffold <addon_name>
- The new addon will be available in the
odoo/custom_addons
folder in this project.
Add the following to~/.bashrc
# Color git branchesfunction parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'}if [ "$color_prompt" = yes ]; then #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' # Color git branches PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \[\033[01;31m\]\$(parse_git_branch)\[\033[00m\]\$ "else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 'fiunset color_prompt force_color_prompt
- Any other Postgres Database Manager can connect to the DB using the
.env
credentials.
- This project comes with a PgAdmin container which is loaded only in
docker-compose.override.pgadmin.yml
.In order to manage DB we provide a pgAdmin container.In order to bring this up, simply run:
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.pgadmin.yml up -d --build
And to turn down
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.pgadmin.yml down
If your instance has pgAdmin, make sure you adapt your aliases to this configuration.
Note: the deployment process is easier & faster with aliases.
- Backup the production Databases from
/web/database/manager
. - Run
sudo apt update && sudo apt upgrade -y
- If packages are kept, install them
sudo apt install <kept packages>
- Restart the server
sudo reboot
- Make sure there are no more upgrades or possible kept packages
sudo apt update && sudo apt upgrade -y
- Go to the project folder in /home/ubuntu or (~)
cd ~/odoocker
or with alias:
odoo
- Pull the latest
main
branch changes.
git pull origin main
- Set
Staging
environment - Set
Production
environment
This project is based on theOfficial Odoo Docker image. We've strived to ensure a seamless integration with the original Docker setup while making necessary customizations to suit our requirements. We encourage contributors and users to frequently refer to the official documentation for foundational concepts and updates. Thank you for your continued support and trust in our project.
About
A game-changer in the world of Odoo Development and Deployment.