From 8be5d0d2672841eb52db7042e4899282d200473a Mon Sep 17 00:00:00 2001 From: Oleksandr Husak <oleksandr.husak@mailbox.tu-dresden.de> Date: Wed, 13 Oct 2021 14:59:36 +0200 Subject: [PATCH] docker container --- Dockerfile | 12 +++++++ README.md | 81 ++++++++++++++++++++++++++++++++++++------------ nginx.conf | 17 ++++++++++ src/favicon.ico | Bin 948 -> 15406 bytes 4 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 Dockerfile create mode 100644 nginx.conf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..52320c2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +# --- STAGE 1: Build +FROM node:14.18-alpine AS build +WORKDIR /usr/src/app +COPY package.json package-lock.json ./ +RUN npm install +COPY . . +RUN npm run build + +# ---STAGE 2: Run +FROM nginx:1.17.1-alpine +COPY nginx.conf /etc/nginx/nginx.conf +COPY --from=build /usr/src/app/dist/MainApp /usr/share/nginx/html \ No newline at end of file diff --git a/README.md b/README.md index b0e7002..fc89282 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,70 @@ -# MainApp +# Frontend App -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.9. +## Messages -## Development server +- Public MQTT brocker from [hivemq](https://www.hivemq.com/public-mqtt-broker/). + - `ipos/client/position`: relative position of an agent to a curent root point + - `ipos/client/root`: update a root point. Default is `{"latitude": 51.02545, "longitude": 13.72295}`. +- Messages description: [SimpleSceneIntegration Interface](https://md.inf.tu-dresden.de/IPos_IFSimpleSceneIntegration). -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. -## Code scaffolding +## Run +- 1. Install all dependency and run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + - if you don't want to install all dependencies, you can simply run the application in a container. + 1. `docker build -t frontend-osm .` + 2. `docker run -p 4200:80 frontend-osm:latest` + 3. Navigate to `http://localhost:4200/` +- 2. Send messages to a `hivemq` public brocker + - topic `ipos/client/position` + - new positions + - ```json + { + "object": [ + { + "id": "Employee1", + "sensorId": "UWB_1", + "type": "HUMAN", + "sensorType": "UWB", + "position": { + "refSystemId": "ROOT", + "point": { + "x": 13, + "y": 22, + "z": 3 + }, + "accuracy": 1 + }, + "orientation": { + "x": 1, + "y": 0.5, + "z": 1, + "w": 1.5 + }, + "lastPosUpdate": "2021-09-14T09:41:20+00:00" + } + ], + "type": "EntryNotification" + } + ``` + - More objects can be added to the `"object": []` + - There are special colours for objects with id `"Employee1"` - `"Employee4"`. Config: [MarkerColorMap](src/environments/environment.ts) + - topic `ipos/client/root` + - ```json + { + "refSystemId": "ROOT", + "point": { + "latitude": 51.02535, + "longitude": 13.72285 + }, + "accuracy": 1 + } + ``` -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. -## Build -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. +## Help +- This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.9. +- Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. +- Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. +- Validate JSON: [jsonformatter.org](https://jsonformatter.org/) -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..4b93bdc --- /dev/null +++ b/nginx.conf @@ -0,0 +1,17 @@ +events{} + +http { + + include /etc/nginx/mime.types; + + server { + listen 80; + server_name frontendOSM; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } + } +} diff --git a/src/favicon.ico b/src/favicon.ico index 997406ad22c29aae95893fb3d666c30258a09537..1f6eaacef448b7dd372818e93ab05d15225817c7 100644 GIT binary patch literal 15406 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 literal 948 zcmeAS@N?(olHy`uVBq!ia0y~yV31*8V36ZrV_;ygKUz1Rfq{Xuz$3Dlfq`2Hgc&d0 zt^32kz?|mk;uzx5IW^qdM>tSq@8_3ird$#$b)PtmGj%avUXLD+Sz&S#OH+=Bed~^k zE(t5$l#lUxmp*pmH4IGd;gaZCq}bXq{|D!ekIpR10+!S`*{d|ox^icu@gBap=gxSl z)qcKL`~J+{;`cM7wI-iz2<>oODaSCydtP5<MW1wf<TuBx!dGjq8vAe_U9d%#;n2;~ ztIzqnEH{y!wal35e7{x1Hsg%~d-G=p@OUvc9hsl6?CH^zIAcH4dH&5h)pmyZ`;AmY znu9nUgJNH3mcPBjX#coaKr*U4j!%Z~oA~*{^O0@2@w29<wr*Hd6m9W4?iJTNwSxEO zbZ7LQcdSjGd{tNB!=E*W4}Mcz_;n3qgHgODkLx_m$6c$kW=vUJwv9RWv=qawDF4jI zecb79^1?aT*Gg5}<XPMZSbg{U^>^))gz^vCs#x@S-}tn_vPR|kz1LqIe!rYt))!zS zvoY(Akln64y_z>0QjMl1s!cRVJi24!LcTlil2T>5&o<0i>s<dc?er26S5@8W8`pM; z?OJ_(o%8XhesAw(MP$yZOFrqWQ!;;jh~)Cir!V|3V%SyvTVbY;X7SZaVH{WAn5iz& z=um#RWTxWF*#F&(9!oDx@K6yA5`DY&SzM6FU&o1Nh8mJ$_K`0-W?itG(RWrOO6tS( z!$-ac=AQN8Fk0<BB}&XQ`TaF6*~v@SoLSx?;oQ+;r1+?{g<-$Og0AfnQ<NAsxaYUD z+I=d#@j<}$!(6siDyny?5-zS^_E<WE|Fc@(z6)mqJUBACq7-f4Ff?>mExzc#e(SB@ zpT5qXq@xuU7Pi&!lysUFld}wm*K3YgSJ&p#-Wvt7zg$RJsLW@&^@+eF`2?fN5XBd} zYR&gAzj?o-u2HA8y}zpX#FqnS-c)`HnSE9~tZm`$gD*b2i2bTRB<E}-y2QP;#X<GV zM02Ca4I=mURp)zkC^<~)h~voUs^i%;FYU;h>57S0T%Iz2GuuD?dAA3DV$B=lZOvyH z6r$};vfMbhvpd#2)ab(g!yh-Ek7Z~$GM#H>zhpq@2A(^5;i*}LzgRN!Zg8aEKBmo3 zU~_+0pvT;%56#ba?9GZ^(LVK@^z27^d%wKo4BR!RsX!tAv-hD-_1uOUt()YuJC_P2 zIa#nij44Xwx_+jyrA#kp&fiDVG#=mia(wT_^268u`LO+C{8`>(vCFyVAp-*ggQu&X J%Q~loCIA*?vmyWh -- GitLab