Uweheuerbackend: Difference between revisions

From Wiki RB4
Line 113: Line 113:
===Local from Eclipse===
===Local from Eclipse===
* run MySQL
* run MySQL
* create Eclipse Run Configuration [[File:SpringBootRunConfiguration1.png|400px]] [[File:SpringBootRunConfiguration2.png|400px]]
* create Eclipse Run Configuration (picture outdated) [[File:SpringBootRunConfiguration1.png|400px]] [[File:SpringBootRunConfiguration2.png|400px]]
** this creates a file <code>UweHeuerBackend Run SpringBoot Run Configuration.launch</code> in C:\Uwes\SoftwareProjects\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\


===Docker Compose===
===Docker Compose===

Revision as of 19:37, 30 April 2023

Documentation

  1. https://miro.com/app/board/uXjVPuAgvI0=/
  2. C:\Uwes\owncloud\documents\Software_Development\MyDevelopments\uweheuer.drawio

Architecture and Implementation

Environment Variables

  • see 1. sheet 'Backend Environment Variables'

ToDo

APIs

Local Dev

Local Docker

Raspberry Docker via IP

Raspberry Docker via uweheuer.spdns.de

By Windows Powershell

curl.exe -X POST localhost:8080/menus -H “Content-type:application/json” -d '{ \"name\": \"test by curl\" }'

By Linux Command Shell

curl https://uweheuer.spdns.de/fwdtest/backend/admin/import

Installation

Raspberry

  • Git installation
  • Maven installation
  • Java installation
  • Login via gh auth login
  • Clone repositories
uwe@raspberrypi4:~/SoftwareProjects/eclipse-workspace $ git clone https://github.com/UweHeuer/uweheuer-backend.git
uwe@raspberrypi4:~/SoftwareProjects/eclipse-workspace $ gh repo clone UweHeuer/uweheuer-frontend

Build

  • build by Maven
  • setup on computer see here
  • steering of target environments by profiles in pom.xml:
    • local_dev (default)
    • heroku

Development Laptop

  • jar-file
C:\Uwes\SoftwareProjects\eclipse-workspace\uweheuer-backend>mvn -DskipTests package

Raspberry

  • get updates from repository
uwe@raspberrypi4:~/SoftwareProjects/eclipse-workspace/uweheuer-backend $ git pull
  • jar-file
uwe@raspberrypi4:~/SoftwareProjects/eclipse-workspace/uweheuer-backend $ mvn -DskipTests package

Docker

  • build image on all computers
<PROJECT_PATH> docker build --tag uweheuerbackend .

Run

Local from Command Line

C:\Uwes\SoftwareProjects\eclipse-workspace\uweheuer-backend>mvn spring-boot:run -Dspring-boot.run.arguments="--spring.datasource.password=mHalloo0@1m --spring.datasource.username=root --uweheuer.bookmarks.import.dbuser=root --uweheuer.bookmarks.import.dbpwd=mHalloo0@1m --uweheuer.bookmarks.parole=jakobthimo123456"

Local from Eclipse

  • run MySQL
  • create Eclipse Run Configuration (picture outdated)
    • this creates a file UweHeuerBackend Run SpringBoot Run Configuration.launch in C:\Uwes\SoftwareProjects\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\

Docker Compose

  • run all containers
uwe@raspberrypi4:~/SoftwareProjects/eclipse-workspace/uweheuer-backend $ docker compose --env-file .compose.env up -d // using an local env file, run in background
  • stop all containers
uwe@raspberrypi4:~/SoftwareProjects/eclipse-workspace/uweheuer-backend $ docker compose --env-file .compose.env down

Implementation

Spring Boot Standard Diagnosis Actuator

  • adding Spring Boot Actuator by adding to pom.xml:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • adding to application.properties all endpoints
management.endpoints.web.exposure.include=*
  • add class ActuatorHttpExchangesConfiguration for HTTP request logging

Set Build Timestamp

  • see pom.xml below spring-boot-maven-plugin and
  • AdminController.java BuildProperties attribute

Logging

  • uses Logback
  • see /src/main/resource/log-back-spring.xml
    • log files go to ./logs/ directory
  • in a Docker environment /logs/ is mapped via .compose.env to a local machine directory