Wonach suchst Du?
What are you looking for?

Wie installiere ich den metasfresh-Stack mittels Docker?

Überblick

Diese Anleitung beschreibt die Installation der folgenden Dienste gemäß dieser Übersicht:

Hardware-Anforderungen

  Mindestens Empfohlen
RAM 4 GB 8 GB (steigt mit Größe der Datenbank)
CPU 1 VCPU 4 VCPU
HDD 10 GB 20 GB
OS Empfehlung Linux Server Ubuntu 22.04

Installation mittels Docker

Docker und Docker Compose installieren

Installiere Docker und anschließend das Docker-Compose-Plugin über das offizielle Docker Repository.

  1. Docker installieren.
  2. Docker-Compose-Plugin installieren.

metasfresh installieren

  1. Klone den metasfresh-docker Ordner und wechsle in das neu erstellte Verzeichnis.

    git clone https://github.com/metasfresh/metasfresh-docker.git
    cd metasfresh-docker/
    

    In diesem Verzeichnis befindet sich die Datei docker-compose.yml.

  2. Öffne als Nächstes mit einem Texteditor deiner Wahl (z.B. nano, vi) die docker-compose.yml-Datei und passe sie deinen Anforderungen entsprechend an.

    Hinweis: Ein Beispiel hierfür findest du am Ende dieser Anleitung.

  3. Kommentiere environment und http://example.com:8080 ein und ersetze example.com:8080 durch die URL und den Port, an dem der Server vom Browser aus erreichbar sein soll.

    ...
    environment:
      - WEBAPI_URL=http://example.com:8080
    ...
    

    Hinweis: Port :8080 wird nur dann benötigt, wenn ein anderer Port als Port 80 verwendet werden soll.
    Siehe hierzu auch: Wie ändere ich die WebUI-Ports für metasfresh-Docker?

    WICHTIG:
    Solltest Du eine RPM-basierende Distribution einsetzen und/oder auf Deinem Docker-Host die Datei /etc/timezone nicht vorfinden, lösche oder kommentiere die Zeile - /etc/timezone:/etc/timezone:ro aus deiner docker-compose.yml aus!
  4. Erstelle die Docker Container.

     docker compose build
    
  5. Mit den folgenden Befehlen kann Docker nun gestartet und wieder gestoppt werden:

    #starten#
    docker-compose up -d
    
    #stoppen#
    docker-compose down
    

    Hinweis: Beim ersten Start des Containers kann es einige Minuten dauern, bis die Datenbank gefüllt und der Dienst verfügbar ist.

Zugriff

Nach erfolgreicher Installation kannst Du über folgende URLs auf das metasfresh WebUI zugreifen:

oder

Nächste Schritte

Beispiel docker-compose.yml

db:
  build: db
  restart: always
  volumes:
    - ./volumes/db/data:/var/lib/postgresql/data
    - ./volumes/db/log:/var/log/postgresql
    - /etc/localtime:/etc/localtime:ro
    - /etc/timezone:/etc/timezone:ro
  environment:
    - METASFRESH_USERNAME=metasfresh
    - METASFRESH_PASSWORD=metasfresh
    - METASFRESH_DBNAME=metasfresh
    - DB_SYSPASS=System
app:
  build: app
  hostname: app
  links:
    - db:db
    - search:search
  expose:
    - "8282"
    - "61616"
  restart: always
  volumes:
    - ./volumes/app/log:/opt/metasfresh/log:rw
    - /etc/localtime:/etc/localtime:ro
    - /etc/timezone:/etc/timezone:ro
  environment:
    - METASFRESH_HOME=/opt/metasfresh
webapi:
  build: webapi
  links:
    - app:app
    - db:db
    - search:search
  #for accessing the api directly (eg. for debugging or connecting your
  #app to the metasfresh api) uncomment following lines:
  #ports:
    #- "8080:8080"
  restart: always
  volumes:
    - ./volumes/webapi/log:/opt/metasfresh-webui-api/log:rw
    - /etc/localtime:/etc/localtime:ro
    - /etc/timezone:/etc/timezone:ro
webui:
  build: webui
  links:
    - webapi:webapi
  ports:
    - "80:80"
    - "443:443"
  restart: always
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - /etc/timezone:/etc/timezone:ro
  #uncomment and set to URL where metasfresh will be available from browsers
  environment:
    - WEBAPI_URL=http://myserver.com
    search:
      build: search
      ulimits:
        memlock:
          soft: -1
          hard: -1
        nofile:
          soft: 65536
          hard: 65536
      cap_add:
        - IPC_LOCK
      volumes:
        - ./volumes/search/data:/usr/share/elasticsearch/data
        - /etc/localtime:/etc/localtime:ro
        - /etc/timezone:/etc/timezone:ro
      environment:
        - "ES_JAVA_OPTS=-Xms128M -Xmx256m"
      restart: always

Sichtbar machen der Reports zwecks Bearbeitung

Möchte man die Reports, welche im metasfresh App-Docker-Image enthalten sind, editierbar machen, so muss man diese im docker-compose.yml zuerst als Volume nach außen legen.

# Neues Volume reports hinzugefügt, um die Jasper
# Reports Dateien anpassen zu können
  volumes:
    - ./volumes/app/reports:/opt/metasfresh/reports:rw
    - ./volumes/app/log:/opt/metasfresh/log:rw
    - /etc/localtime:/etc/localtime:ro
    - /etc/timezone:/etc/timezone:ro
ACHTUNG:
Hier befinden sich natürlich die kompilierten Jasper-Dateien. Man muss sich also zum Ändern der Reports zuerst das Repository mit den Quellen der Reports ziehen und dann mit Jasper Reports kompilieren.

Visualisierung der Docker-Container

In diesem Forumsbeitrag (auf Englisch) über dieses Thema werden zwei weit verbreitete Tools empfohlen.

Feedback

Bei Fragen oder Problemen kannst du in unserem offiziellen Community Forum gerne um Unterstützung bitten:


Zur Quelldatei auf GitHub.com