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 mit Docker

Docker und Docker Compose installieren

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

  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/
    
  2. Öffne als nächstes mit einem Editor deiner Wahl (z.B. nano, vi) die docker-compose.yml und passe diese so an, wie du es benötigst.

    Hinweis: Ein Beispiel dafür findest Du am Ende dieser Anleitung.

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

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

    Hinweis: Port :8080 wird nur benötigt, wenn ein anderer 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 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 folgenden Befehlen kann Docker gestartet und wieder gestoppt werden.

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

    Hinweis: Beim ersten Start kann es ein paar Minuten dauern, bis die Datenbank initialisiert und die Services verfügbar sind.

Zugriff

Nach erfolgreicher Installation kannst Du hierüber auf das 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"
  #for accessing the api directly (eg. for debugging or connecting your
  #app to the metasfresh app server and java client can access rabbitmq) uncomment following lines:
  #ports:
  #  - "8282:8282"
  #  - "61616: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 liegen 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 uns gerne in unserem offiziellen Forum um Unterstützung bitten:


Zur Quelldatei auf GitHub.com