Odoo in Docker Container
Containerized Odoo with Docker persistent storage and networking
How to install Odoo in Docker containers?
Docker containers make it easy for Odoo.
1. Install Docker:
1. Update and Install Docker CE:
$ sudo apt-get update && sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
2. Add Docker’s official GPG key:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
3. Use the following command to set up the stable repository:
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
4. Install the latest version of Docker CE or specific version:
$ sudo apt update && sudo apt install docker-ce -y or $ sudo apt update && sudo apt-get install docker-ce=<VERSION>
5. If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like:
$ sudo usermod -aG docker your-user Remember that you will have to log out and back in for this to take effect! WARNING: Adding a user to the "docker" group will grant the ability to run containers which can be used to obtain root privileges on the docker host. Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface for more information.
6. If Above step did not work try this:
$ cd /var/run $ ls -lrth docker.sock $ sudo chmod 666 /var/run/docker.sock $ ls -lrth docker.sock
7. Running Docker:
$ sudo docker run hello-world
We successfully installed docker on ubuntu system and now going to setup Odoo using the docker. Odoo uses the PostgreSQL database which is a different application. So, we are going to create one container for the PostgreSQL database server and one for Odoo application. By doing this we can able to create multiple Odoo instances using one PostgreSQL database server instance.
2. Installing Odoo In Docker Container:
1. Start a PostgreSQL server:
$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:<database server version>
2. Start an Odoo instance:
$ docker run -p 8069:8069 --name odoo --link db:db -t odoo:<Odoo Version>
The alias of the container running Postgres must be DB for Odoo to be able to connect to the Postgres server.
We published Odoo web service in port 8069 so you can navigate to http://localhost:8069. If you use Docker in a virtual machine you have to change localhost to the IP-address of your Docker virtual machine, e.g. http://192.168.0.1:8069.
Odoo starts with a welcome page and you are able to create your Odoo database. The creation takes less than a minute. After that, you can install apps and start using Odoo.
After you create the database, remember to change the master password if your Odoo web pages are accessible to other users.
3. Starting and stopping Odoo containers:
a. Found container id of Odoo:
$ docker ps
b. Stop Odoo instance:
$ docker stop odoo
c. Start Odoo instance:
$ docker start odoo
d. Restart Odoo Instance:
$ docker restart odoo
4. Stop and restart a PostgreSQL server:
When a PostgreSQL server is restarted, the Odoo instances linked to that server must be restarted as well because the server address has changed and the link is thus broken. Restarting a PostgreSQL server does not affect the created databases.
5. Run Odoo with a custom configuration:
The default configuration file for the server (located at /etc/odoo/odoo.conf) can be overridden at startup using volumes. Mounting customer add-ons or Odoo Enterprise add-ons using <b>`composer.yml`</b> file.
a. Install docker-composer:
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Next, we’ll set the permissions:
$ sudo chmod +x /usr/local/bin/docker-compose
Then we’ll verify that the installation was successful by checking the version:
$ docker-compose --version
b. Running a Container with Docker Compose :
First, we’ll create a directory for the YAML file and move into it:
$ mkdir odoo-docker
$ cd odoo-docker
Then, we’ll create the YAML file:
$ nano docker-compose.yml
Put the following contents into the file, save the file, and exit the text editor:
Now, while still in the ~/hello-world directory, we’ll execute the following command:
$ docker-compose up -d
-d : For start service in background
Docker Store has the official Odoo container here: https://hub.docker.com/_/odoo/. The image is based on the Dockerfile found in odoo/docker repository. PostgreSQL image is also available on Docker Hub: https://hub.docker.com/_/postgres/.
If you have questions about how to use Odoo or container technologies in your business, I am happy to answer them and help you. :)