Telefon: +49 (0) 3831 - 44557 - 0 | E-Mail: sales@intero-technologies.de

Entwickler-Blog: Ein Setup mit Docker und Odoo (für Einsteiger)

Docker ist eine Container-Virtualisierungslösung, die es ermöglicht Services voneinander gekapselt und reproduzierbar zu deployen. In dieser Anleitung werden wir ein einfaches Odoo 10 Setup auf Dockerbasis zum Laufen bringen. Dieses Setup ist jedoch nicht für den produktiven Einsatz gedacht, sondern dient als Einstiegspunkt.

Vorbedingung

Es sollte Docker in der aktellen Version installiert sein. Anleitungen zu unterschiedlichen Betriebssystemen gibt es hier bzw. hier am Beispiel eines Ubuntu Systems mit Docker CE. Um das Deployment zu vereinfachen wird hier ein Docker-Compose Setup genutzt. Dafür ist es optional nötig Docker Compose zu installieren. Zur Installation siehe hier. Alternativ kann man einen Docker Stack deployen, dafür ist aber der Swarm Modus nötig, sowie min. Docker Version 1.13. Beide Deployment-Varianten werden hier beschrieben.

Schritt 1:

Zuerst benötigen wir einige Konfigurationsdateien. Dies sind die docker-compose.yml für Compose bzw. Stack und eine nginx.conf für den NGINX-Proxy. Ein NGINX Proxy ist zwar nicht zwingend notwendig, wird aber meist im Zusammenhang mit TLS Verschlüsselung, Caching, sowie Komprimierung genutzt. In der Compose Datei (docker-compose.yml) werden 3 Services definiert, zuerst NGINX als Proxy (und Cache), das eigentliche Odoo System, sowie PostgreSQL in der Version 9.4. Eine neuere PostgreSQL Version wird vom Odoo Image nicht vollständig unterstützt.

version: '3'
services:
  proxy:
    image: nginx
ports:
     - "80:80"
- "443:443"
depends_on:
     - odoo
volumes:
     - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
 
odoo:
    image: odoo:10
depends_on:
     - db
 
db:
    image: postgres:9.4
environment:
     - POSTGRES_USER=odoo
- POSTGRES_PASSWORD=odoo


Details zu den einzelnen Images findet man auf dem Docker Hub, dort jeweils nach dem Namen des Images gesucht (nginx, odoo oder postgres) Als zweites folgt die genutzte NGINX Konfiguration an sich (nginx.conf). 

server {    
listen 80;
    server_tokens off;
    client_max_body_size 200m;
    keepalive_timeout 600;
    send_timeout 600;
    proxy_read_timeout 3500;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;
    location ~* /web/static/ {
proxy_cache_valid 200 60m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo:8069;
    }

    location / {
proxy_pass http://odoo:8069;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
    }}



Schritt 2:

Beide Dateien liegen in einem Ordner "demo", in den gewechselt wird, um von dort aus die Services zu deployen. Der Start der Services geschieht entweder über Docker Compose oder über Docker Stack. Bei Compose müssen die Services nur gestartet werden. Beim Stack Deployment wird noch vorausgesetzt, dass der Docker Host Mitglied eines Clusters ist (Swarm Manager).

Docker Compose:

docker-compose up -d


Docker Stack:

docker swarm init
docker stack deploy --compose-file docker-compose.yml demo


Schritt 3:

Nun folgt der Test und das Einrichten einer Datenbank. Odoo sollte nun über http://localhost erreichbar sein und folgende Ansicht präsentieren:

Alle Werte hier sind frei wählbar. Nach Bestätigung erfolgt automatisch die Einrichtung der Datenbank sowie ein Login als Administrator. Nun können die ersten Module installiert werden und Odoo nach seinen Wünschen konfiguriert werden. Sollte die Seite nicht wie erwartet erscheinen - und auch zur allgemeinen Fehlersuche, schaut man erst ob die einzelnen Services laufen. Danach lohnt ein Blick in die Logeinträge:


Anzeige der laufenden Container:

docker ps

hier sollten die 3 Instanzen zu sehen sein (proxy, odoo, db)


Ausgabe aller Logeinträge:

Docker Compose:

docker-compose logs

Docker Stack:

Ausgabe aller Logs nicht möglich


Ausgabe je Service (nur die letzten 100 Zeilen, fortlaufend)

Docker Compose:

docker-compose logs --tail=100 -f demo_odoo_1

Docker Stack:

docker service logs --tail=100 -f demo_odoo


Zusammenfassung:

Odoo mit Hilfe von Docker ist schnell gestartet. Es gibt aber noch viele Punkte die hier nicht behandelt wurden:

  • TLS Verschlüsselung (HTTPS)

  • deutsches DB Encoding

  • neueste PostgreSQL Version

  • Aktuellste Odoo Version

  • Skalierbarkeit, Hochverfügbarkeit, Replikation

  • Nutzung von generierten Passwörtern

  • Reports

  • Einbindung eigener bzw. 3rd Party Modulen

Haben wir Ihr Interesse geweckt? Gern nehmen wir eine Installation auf Ihrem System vor. Wenden Sie sich dafür gern an unseren Account Manager Herrn Hannaske unter r.hannaske@intero-technologies.de oder 03981-445570.