## Docker The docker container is based on the image **zenika/alpine-maven:3-jdk8**. Uses **Java JDK 8** and **Maven 3**. Configuration is composed of **docker-compose.yaml** and **Dockerfile**. #### Dockerfile Fundamental configuration which is used as a base for all services. Contains several variables:
**Accessible in compile time:** - MAVEN_PROFILE: defines maven profile
**Accessible in runtime:** - APP_PARAMS: defines parameters for an application - DEBUG: defines if debugging will be enabled #### Docker-compose Configuration of services. This file contains configuration of each service where are defined build and runtime variables. Name of service is **fcs2** which is used for *build* and *start* the service. Build arguments contain definition of maven profile. Arguments variables defines in *build* section are accessible only during compile time. When the images is created, the variables can not be changed. Environment variables are located in *environment* section and can be changed after the build process. These variables are used to set configuration for the built. Debugging can be enabled to set **DEBUG** variable to **true** and publish the port **50005**. Otherwise the debugging is disable. ##### docker-compose.yaml ```yaml services: fcs2: container_name: fieldclimateSenslog2 build: dockerfile: Dockerfile context: . args: MAVEN_PROFILE: FieldClimateSenslog2 ports: - "5005:5005" restart: always environment: APP_PARAMS: -cf config/test.yaml DEBUG: "true" ``` ## Build & run To build all or a specific one service. ```sh $ docker-compose build $ docker-compose build // e.g. fcs2 ``` To start all or a specific one service. ```sh $ docker-compose up $ docker-compose up // e.g. fcs2 ``` ## Java & Maven The application supports **Java 8+** and uses **Maven** as a build automation tool. Configuration for Maven contains profiles which defines modules that will be compiled. It is recommended to clean entire project before compilation. ```sh $ mvn clean ``` To build all modules. ```sh $ mvn package ``` To build only the modules which contains modules for the Azure LoraWan and the Senslog V1. ```sh $ mvn package -P LoraWanSenslog1 ``` All modules (JARs) are compiled to the **bin** folder. To be able to start the application, it is important to add all JARs to classpath and to define main class (java ). ```sh $ java -cp "bin/*" cz.senslog.connector.app.Main ``` #### Parameters The application allows these parameters: ```sh Usage: General Senslog Connector [options] Options: -cf, -config-file Configuration file in .yaml format. -h, -help ```