From e061b657c6484bf285bd82b36bb11f6fddf1a0a6 Mon Sep 17 00:00:00 2001 From: Augustin Borsu Date: Thu, 10 Oct 2019 23:21:44 +0200 Subject: [PATCH] [FIX]: working dockerfile and docker-compose --- .dockerignore | 2 + .gitignore | 3 + Dockerfile | 87 ++++++++++++++++++-------- README.md | 1 + docker-compose.yml | 15 ++--- initial-data-load/00_initial.sql | 1 + initial-data-load/01_readme.md | 6 ++ initial-data-load/03_disable_crons.sql | 4 ++ install-odoo-docker.md | 54 ++++++++++++++++ odoo.conf | 24 +++++++ 10 files changed, 165 insertions(+), 32 deletions(-) create mode 100644 .dockerignore create mode 100644 initial-data-load/00_initial.sql create mode 100644 initial-data-load/01_readme.md create mode 100644 initial-data-load/03_disable_crons.sql create mode 100644 install-odoo-docker.md create mode 100644 odoo.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..241e560 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +* + diff --git a/.gitignore b/.gitignore index 6f06467..1566992 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ _build/ # dotfiles .* !.gitignore +!.dockerignore !.mailmap # compiled python files *.py[co] @@ -32,3 +33,5 @@ install/win32/meta.py /man/ /share/ /src/ + +initial-data-load/*.sql.gz diff --git a/Dockerfile b/Dockerfile index 2a8a4c9..c9cedd0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,72 @@ -FROM odoo:9.0 +FROM ubuntu:18.04 -USER root -RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list -RUN apt-get update && apt-get install -y git wget gcc python-dev libssl-dev libffi-dev make +ENV DEBIAN_FRONTEND=noninteractive + +# Install the basics +RUN ln -fs /usr/share/zoneinfo/Europe/Brussels /etc/localtime && \ + apt-get update && apt-get install -y curl git postgresql python3-psycopg2 python3-pip && \ + dpkg-reconfigure --frontend noninteractive tzdata -##### 10) Installer wkhtml to pdf 0.12.1 !! (pas une autre) (sur une machine 64 bit avec un ubuntu 64bit 14.04) -# RUN apt-get install -y fontconfig libfontconfig1 libxrender1 fontconfig-config libjpeg-turbo8-dev && \ -# wget --quiet https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.trusty_amd64.deb && \ -# dpkg -i wkhtmltox_0.12.5-1.trusty_amd64.deb && \ -# ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage && \ -# ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf +# Install wkhtmltopdf 0.12.5 +RUN curl -L https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb \ + --output wkhtmltox_0.12.5-1.bionic_amd64.deb && \ + (dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb || apt-get -f install -y) && \ + ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage && \ + ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf && \ + rm -f wkhtmltox_0.12.5-1.bionic_amd64.deb -RUN mkdir -p /app/extra-addons && chown odoo /app/extra-addons +# Node (ubuntu 14 version of node is Old as f*) +RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ + apt-get install -y nodejs && \ + npm install -g less less-plugin-clean-css + +RUN useradd -ms /bin/bash odoo USER odoo -RUN git clone https://github.com/beescoop/Obeesdoo.git /app/extra-addons/obeesdoo -b 9.0 --depth 1 && \ - git clone https://github.com/coopiteasy/vertical-cooperative.git /app/extra-addons/vertical-cooperative -b 9.0 --depth 1 && \ - git clone https://github.com/coopiteasy/addons.git /app/extra-addons/houssine-addons -b 9.0 --depth 1 && \ - git clone https://github.com/coopiteasy/procurement-addons /app/extra-addons/procurement-addons -b 9.0 --depth 1 && \ - git clone https://www.github.com/OCA/l10n-belgium /app/extra-addons/l10n-belgium -b 9.0 --depth 1 && \ - git clone https://www.github.com/OCA/mis-builder /app/extra-addons/mis-builder -b 9.0 --depth 1 && \ - git clone https://www.github.com/OCA/web /app/extra-addons/web -b 9.0 --depth 1 && \ - git clone https://github.com/OCA/server-tools /app/extra-addons/server-tools -b 9.0 --depth 1 && \ - git clone https://github.com/OCA/reporting-engine /app/extra-addons/reporting-engine -b 9.0 --depth 1 +RUN mkdir -p /home/odoo/extra-addons +WORKDIR /home/odoo +RUN git clone https://github.com/coopiteasy/OCB.git /home/odoo/odoo -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/addons.git /home/odoo/addons -b 12.0 --depth 1 && \ + git clone https://github.com/beescoop/Obeesdoo.git /home/odoo/obeesdoo -b 12.0 --depth 1 && \ + # git clone https://github.com/coopiteasy/procurement-addons.git /home/odoo/procurement-addons -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/vertical-cooperative.git /home/odoo/vertical-cooperative -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/account-financial-reporting.git /home/odoo/account-financial-reporting -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/account-financial-tools.git /home/odoo/account-financial-tools -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/bank-payment.git /home/odoo/bank-payment -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/l10n-belgium.git /home/odoo/l10n-belgium -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/mis-builder.git /home/odoo/mis-builder -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/pos.git /home/odoo/pos -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/reporting-engine.git /home/odoo/reporting-engine -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/server-tools.git /home/odoo/server-tools -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/web.git /home/odoo/web -b 12.0 --depth 1 && \ + git clone https://github.com/coopiteasy/website.git /home/odoo/website -b 12.0 --depth 1 && \ + echo "That's all folks!" USER root -RUN pip install --upgrade setuptools enum -RUN pip install -r /app/extra-addons/reporting-engine/requirements.txt -RUN pip install -r /app/extra-addons/server-tools/requirements.txt -RUN pip install -r /app/extra-addons/obeesdoo/requirements.txt +# RUN pip4 install --upgrade pip +# adding dependencies here so that we don't have to rebuild the previous steps if it changes. +# python3 c header files +# pillow dependencies +# more pillow dependencies +# python3-lxml +# python3-ldap +RUN apt-get install -y python3-dev \ + libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev \ + libwebp-dev tcl8.6-dev tk8.6-dev \ + libxml2-dev libxslt1-dev \ + libsasl2-dev libldap2-dev libssl-dev + USER odoo +# Installing in user space because system-libraries cannot be uninstalled and conflict. +# Simpler than creating a virtualenv +RUN sed -i '/psycopg2/d' /home/odoo/odoo/requirements.txt && \ + sed -i '/python3-ldap/d' /home/odoo/odoo/requirements.txt && \ + sed -i '/xlwt/d' /home/odoo/odoo/requirements.txt && \ + sed -i '/xlrd/d' /home/odoo/odoo/requirements.txt && \ + pip3 install --user -r /home/odoo/odoo/requirements.txt \ + -r /home/odoo/reporting-engine/requirements.txt \ + -r /home/odoo/server-tools/requirements.txt -# COPY example_odoo.conf /etc/odoo/openerp-server.conf +WORKDIR /home/odoo/odoo +CMD python3 odoo.py diff --git a/README.md b/README.md index c3391de..0494ce6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Specific module for the Beescoop - cf. [install-odoo-linux-server.md](install-odoo-linux-server.md) (review) - cf. [install-odoo-linux.md](install-odoo.md) (review) - cf. [install-odoo-mac.md](install-odoo-mac.md) +- cf. [install-odoo-docker.md](install-odoo-docker.md) ## Setup obeesdoo diff --git a/docker-compose.yml b/docker-compose.yml index 7e8b779..bbaab57 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,21 +1,22 @@ version: '3' services: - odoo: build: . + command: python3 odoo-bin -c odoo.conf depends_on: - db ports: - "8069:8069" volumes: - - ./config:/etc/odoo/ - - ./:/app/extra-addons/obeesdoo - + - ./odoo.conf:/home/odoo/odoo/odoo.conf:Z + - ./:/home/odoo/obeesdoo:Z db: image: postgres:10 environment: - - POSTGRES_DB=postgres + - POSTGRES_DB=beescoop - POSTGRES_PASSWORD=odoo - POSTGRES_USER=odoo - - + volumes: + - ./initial-data-load:/docker-entrypoint-initdb.d:Z + ports: + - "5432:5432" diff --git a/initial-data-load/00_initial.sql b/initial-data-load/00_initial.sql new file mode 100644 index 0000000..536090c --- /dev/null +++ b/initial-data-load/00_initial.sql @@ -0,0 +1 @@ +CREATE USER postgres; diff --git a/initial-data-load/01_readme.md b/initial-data-load/01_readme.md new file mode 100644 index 0000000..cb08d00 --- /dev/null +++ b/initial-data-load/01_readme.md @@ -0,0 +1,6 @@ +# Put a database dump here to load it in postgresql + +Us the format `01_*.sql.gz` or `01_*.sql`. +Files are loaded alphabetically, it needs to be loaded after the creation of the odoo user and before we disable cron. + +A postgres user has to be created because otherwise there will be errors importing the dump. diff --git a/initial-data-load/03_disable_crons.sql b/initial-data-load/03_disable_crons.sql new file mode 100644 index 0000000..4cb0937 --- /dev/null +++ b/initial-data-load/03_disable_crons.sql @@ -0,0 +1,4 @@ +UPDATE ir_cron SET active='f'; +UPDATE ir_mail_server SET active='f', smtp_encryption='none', smtp_port=1025, smtp_host='localhost',smtp_user='', smtp_pass=''; +UPDATE fetchmail_server SET active='f', password='', server='localhost'; +update res_users set password='admin' where login='admin'; diff --git a/install-odoo-docker.md b/install-odoo-docker.md new file mode 100644 index 0000000..2658a2e --- /dev/null +++ b/install-odoo-docker.md @@ -0,0 +1,54 @@ +# Create development environment using docker + +> Tested on fedora 31 + +## 1) install Docker + +Checkout the [installation guide](https://docs.docker.com/install/) from docker. +TODO: make it work with [podman](https://podman.io/). + +Be sure to start the docker daemon using `systemctl start docker` (enable if you want it to persist on reboot). +Depending on the distribution, you might need to either use sudo or create a docker group. +The following instructions assume that you can use docker without being root, add sudo if necessary. + +## 2) Build the images (odoo - postgresql) +~ 15 minutes +```bash +docker-compose build +``` + +## 3) Load data in postgresql + +Copy the sql.gz dump into the `initial-data-load` folder. +Prefix it with 02, so that it is loaded after user creation and before the crons are stopped. +```bash +docker-compose up db +``` + +This could take a while (~20 minutes) depending on the data dump you are using. +In order to reset your database, remove the container. +(It will have to rebuild the database the next time you start it). +```bash +docker-compose rm db +``` + +## 4) Run the project +All the modules need to be updated in order to be recognised. +To do that run +```bash +docker-compose run -p 8096:8096 odoo python odoo.py -c odoo.conf -d beescoop -u all +``` + +Once the update has been done, you can simply run the whole project by running +```bash +docker-compose up +``` + +I like to start the database in the background to only have the logs of the application. +```bash +docker-compose up -d db +docker-compose up odoo +``` + +## 5) Login +To login you may either use your account or the admin account whose password should have been reset to admin. diff --git a/odoo.conf b/odoo.conf new file mode 100644 index 0000000..ba651ee --- /dev/null +++ b/odoo.conf @@ -0,0 +1,24 @@ +[options] +admin_passwd = admin +debug=True +dev=True +db_host=db +db_port=5432 +db_user=odoo +db_password=odoo +database=beescoop +addons_path=/home/odoo/odoo/addons, + /home/odoo/obeesdoo, + /home/odoo/vertical-cooperative, + /home/odoo/addons, + # /home/odoo/procurement-addons, + /home/odoo/l10n-belgium, + /home/odoo/mis-builder, + /home/odoo/web, + /home/odoo/website, + /home/odoo/server-tools, + /home/odoo/account-financial-reporting, + /home/odoo/account-financial-tools, + /home/odoo/bank-payment, + /home/odoo/pos, + /home/odoo/reporting-engine