ich versuche gerade metasfresh mit docker-compose zum laufen zu bekommen. Leider erhalte ich beim Aufruf der Website nur eine weiße Seite. Ich nehme an, es liegt daran, dass in der config.js nur http steht, die Seite aber über https aufgerufen wird.
In der docker-compose.yml ist auch https hinterlegt.
version: '3.2'
services:
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
- POSTGRES_PASSWORD=ip2LmNzXX8p8iXg9lZTWEJ9524kQDbXFudB7LR03T-xK9fLweX3TLMkA2AYcEiaS
networks:
- default
app:
build: app
hostname: app
links:
- db:db
- rabbitmq:rabbitmq
- search:search
expose:
- "8282"
- "61616"
- "8788"
restart: always
volumes:
- ./volumes/app/log:/opt/metasfresh/log:rw
- ./volumes/app/heapdump:/opt/metasfresh/heapdump:rw
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
- METASFRESH_HOME=/opt/metasfresh
networks:
- default
webapi:
build: webapi
links:
- app:app
- db:db
- rabbitmq:rabbitmq
- search:search
expose:
- "8789"
# to access the webui-api directly
# (eg. for debugging or connecting your app to the metasfresh api)
# uncomment following port:
#ports:
#- "8080:8080"
restart: always
volumes:
- ./volumes/webapi/log:/opt/metasfresh-webui-api/log:rw
- ./volumes/webapi/heapdump:/opt/metasfresh-webui-api/heapdump:rw
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- default
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=https://crm.meinedomain.de
labels:
- "traefik.enable=true"
- "traefik.http.routers.metafresh.entrypoints=http"
- "traefik.http.routers.metafresh.rule=Host(`crm.meinedomain.de`)" ## Hier eure Domain eingeben ##
- "traefik.http.middlewares.metafresh-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.metafresh.middlewares=metafresh-https-redirect"
- "traefik.http.routers.metafresh-secure.entrypoints=https"
- "traefik.http.routers.metafresh-secure.rule=Host(`crm.meinedomain.de`)" ## Hier eure Domain eingeben ##
- "traefik.http.routers.metafresh-secure.tls=true"
- "traefik.http.routers.metafresh-secure.tls.certresolver=http"
- "traefik.http.routers.metafresh-secure.service=metafresh"
- "traefik.http.services.metafresh.loadbalancer.server.port=80"
- "traefik.docker.network=proxy"
- "traefik.http.routers.metafresh-secure.middlewares=secHeaders@file"
networks:
- default
- proxy
rabbitmq:
build: rabbitmq
expose:
- "5672"
restart: always
volumes:
- ./volumes/rabbitmq/log:/var/log/rabbitmq/log
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
RABBITMQ_DEFAULT_USER: "metasfresh"
RABBITMQ_DEFAULT_PASS: "metasfresh"
RABBITMQ_DEFAULT_VHOST: "/"
networks:
- default
search:
build: search
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
# to access the search api directly
#(e.g. if you did docker-compose up search to have the deachboard with your locally running metasfresh services)
# uncomment following ports:
# ports:
# - "9200:9200"
# - "9300:9300"
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
networks:
- default
networks:
proxy:
external: true
Wenn ich manuell im Container die Datei auf https ändere, kommt der Login screen, nach einem Neustart ist aber (natürlich) wieder alles beim alten.
Irgendwelche Ideen woher der falsche Wert kommt und wie ich ihn dauerhaft ändern kann?
Ich bekomme wenn ich die WebAPI direkt aufrufe diese Meldung:
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request
Reason: DNS lookup failure for: webapi
Die Domain die in der Config.js gespeichert wird ist immer ohne https wenn ich aber in der docker-compose was reinschreibe wie httpss:// dann erscheint das ss auch. Aber aus einen https wird ein http
Die Service von /rest/api und /stomp sind nicht erreichbar?
Wer kann mir Tipps geben oder helfen?
Ich habe MetasFresh und Traefik mit folgender Anleitung am laufen:
Ich hatte eine weiße Seite, weil alles eine kurze Zeit (~10m) nach docker-compose up -d brauchte, sich zu initialisieren (CPU auf 100%).
Seitdem läuft alles stabil, ist erreichbar und auch schnell.
@Sven
Ist bei dir auch der Websocket Service und die REST API verfügbar?
Ich kann mich einloggen, aber bekomme 403 Fehlercode für API Calls und kann keine Verbindung zum Websocket Dienst herstellen.
Der 403 kommt, weil auf Seiten des Servers folgende Fehlermeldung kommt:
Origin header value ‘https://erp.my-domain.de’ not allowed.
Was mich besonders wundert. Ich kann mich nur auf Port 80 mit dem Container verbinden und den exponierten Port nicht ändern. Bei mapping auf 443 bekomme ich einen 400 Bad Request Fehler, mit der Begründung ich würde mich über plain http mit dem ssl Server verbinden. Der Schlüssel und das Zertifikat liegen als exportierte PEM im vorgesehenen certs Ordner.
Wenn ich den http oder den https Port des Containers nach außen mappe bspw. 8443:443, ist keine Verbindung möglich. Dann kommt immer Bad Gateway.
Ich vermute die Verbindung zu API und Websocket gehen über port 80 nicht, weil der Server auf SSL eingestellt ist und nicht über Port 443, weil traefik aus irgendeinem Grund plain http mit dem Container spricht.
Hat hier jemand eine funktionierende Lösung oder einen Hinweis, wie ich das Problem lösen kann?