In order to run odoo from the container we need to create and have accessible to the user the folder /var/lib/odoo.
Also, to use the shared folder with the host (NOTE: this is for local development purpose only, never ever do this on an exposed server) we need to create a user with the same uid as the host ones.
This is the Dockerfile to do that:
FROM odoo-deboot:latest
MAINTAINER Enrico La Cava “me@lerrigatto.com”
RUN useradd -s /sbin/nologin -u 1000 odoo
RUN mkdir /var/lib/odoo
RUN chown odoo:odoo /var/lib/odoo
COPY requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
ENV PATH /usr/local/bin:/usr/bin:/bin:$PATH
USER odoo
EXPOSE 8069
VOLUME /opt/odoo/
WORKDIR /opt/odoo
CMD /bin/bash odoo.sh
The loading script odoo.sh is quite trivial:
#!/bin/bash
python odoo.py –addons-path=addons -w odoo -r odoo –db_host odoo-db
We also need a postgreSQL instance running somewhere, the obviuous solution is to run another container and link them. So this is the new final running script:
#!/bin/bash
#docker build -t “odoo_test:latest” /home/elacava/projects/odoo/devel/
docker run -d -p 5432 -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo –name odoo-db postgres
docker run -i –name odoo -v /home/elacava/projects/odoo/devel:/opt/odoo –link odoo-db:odoo-db odoo_test:latest
The build is not needed for normal running as we are using a shared volume for odoo files.