From 2afea25ec06d8ab2eb81dd53d795f6afc7b3881d Mon Sep 17 00:00:00 2001 From: Hendrik Oenings Date: Tue, 18 Jun 2024 21:53:30 +0200 Subject: [PATCH] Add example compose file --- README.md | 15 +++ compose.yml | 7 ++ portal/config.js | 29 ++++++ portal/config.json | 98 +++++++++++++++++++ portal/index.html | 16 +++ portal/resources/img/backgroundCanvas.jpeg | Bin 0 -> 3445 bytes portal/resources/rest-services-internet.json | 1 + portal/resources/services-internet.json | 46 +++++++++ portal/resources/style_v3.json | 1 + 9 files changed, 213 insertions(+) create mode 100644 compose.yml create mode 100644 portal/config.js create mode 100644 portal/config.json create mode 100644 portal/index.html create mode 100644 portal/resources/img/backgroundCanvas.jpeg create mode 100644 portal/resources/rest-services-internet.json create mode 100644 portal/resources/services-internet.json create mode 100644 portal/resources/style_v3.json diff --git a/README.md b/README.md index ade57d3..c78282a 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,21 @@ cd masterportal-cloud docker build -t masterportal . ``` +A portal is not provided with the container. +It needs to be mounted as a volume inside `/srv/www` (see below). + +The web server is exposed at port 80 in the container. + +## Using docker compose +`docker compose` allows to pre-configure the environment of the docker container. +This repository provides an example configuration that loads the demo portal from the `portal` folder and exposes the Masterportal at port 8080 on your machine. + +Usage: +``` +docker compose build +docker compose up -d +``` + ## Future plans - Provide a Helm chart for Kubernetes deployments diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..6e08c82 --- /dev/null +++ b/compose.yml @@ -0,0 +1,7 @@ +services: + masterportal: + build: . + volumes: + - ./portal:/srv/www/portal:ro + ports: + - 8080:80 diff --git a/portal/config.js b/portal/config.js new file mode 100644 index 0000000..cbcee53 --- /dev/null +++ b/portal/config.js @@ -0,0 +1,29 @@ +const Config = { + alerting: { + fetchBroadcastUrl: './resources/newsFeedPortalAlerts.json', + }, + namedProjections: [ + [ 'EPSG:25832', '+title=ETRS89/UTM 32N +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs' ], + ], + layerConf: './resources/services-internet.json', + restConf: './resources/rest-services-internet.json', + styleConf: './resources/style_v3.json', + wfsImgPath: './resources/img/', + portalLanguage: { + enabled: true, + debug: false, + languages: { + de: 'Deutsch', + en: 'English', + es: 'Español', + it: 'Italiano', + platt: 'Platt', + pt: 'Português', + ru: 'Русский', + tr: 'Türkçe', + ua: 'Українська', + }, + fallbackLanguage: 'de', + changeLanguageOnStartWhen: [ 'querystring', 'localStorage', 'htmlTag' ], + }, +} diff --git a/portal/config.json b/portal/config.json new file mode 100644 index 0000000..1a662fd --- /dev/null +++ b/portal/config.json @@ -0,0 +1,98 @@ +{ + "portalConfig": { + "map": { + "controls": { + "zoom": true, + "orientation": { + "zoomMode": "once" + } + }, + "mapView": { + "backgroundImage": "./resources/img/backgroundCanvas.jpeg", + "startCenter": [ + 561210, + 5932600 + ], + "extent": [ + 510000.0, + 5850000.0, + 625000.4, + 6000000.0 + ], + "startZoomLevel": 1 + } + }, + "portalFooter": { + "urls": [ + { + "bezeichnung": "common:modules.portalFooter.designation", + "url": "https://www.dataport.de/", + "alias": "Dataport AöR", + "alias_mobil": "Dataport" + } + ] + }, + "tree": { + "addLayerButton": { + "active": false + }, + "highlightedFeatures": { + "active": true + } + }, + "mainMenu": { + "expanded": true, + "title": { + "text": "Cloud", + "logo": "./resources/img/mp_logo.png", + "link": "https://masterportal.org", + "toolTip": "Masterportal" + }, + "sections": [ + [ + { + "type": "fileImport" + }, + { + "type": "openConfig" + }, + { + "type": "language" + } + ] + ] + }, + "secondaryMenu": { + "expanded": false, + "sections": [ + [ + { + "type": "legend" + }, + { + "type": "scaleSwitcher" + }, + { + "type": "shareView" + }, + { + "type": "measure" + } + ] + ] + } + }, + "layerConfig": { + "baselayer": { + "elements": [ + { + "id": "basemap_color", + "visibility": true + } + ] + }, + "subjectlayer": { + "elements": [] + } + } +} diff --git a/portal/index.html b/portal/index.html new file mode 100644 index 0000000..cbd2e60 --- /dev/null +++ b/portal/index.html @@ -0,0 +1,16 @@ + + + + + + + + + Masterportal-Cloud + + + +
+ + + diff --git a/portal/resources/img/backgroundCanvas.jpeg b/portal/resources/img/backgroundCanvas.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b0bfa66c44529617dfe5d929451b1f6c5fb1a570 GIT binary patch literal 3445 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