Move docker folder into root level (#2008)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-11-11 16:29:12 +02:00
committed by GitHub
parent d1c2c4f211
commit c7c53d8622
15 changed files with 0 additions and 0 deletions

View File

@@ -1,63 +0,0 @@
hawkBit Docker
===
# Setup
## A: Docker Container
Start the hawkBit Update Server as a single container
```bash
$ docker run -d -p 8080:8080 hawkbit/hawkbit-update-server:latest
```
## B: Docker Compose
Start the hawkBit Update Server together with an MySQL and RabbitMQ instance as containers
```bash
# Requires Docker Compose to be installed
$ docker-compose up -d
```
## C: Docker Stack
Start the hawkBit Update Server and Device Simulator together with an MySQL and RabbitMQ instance as services within a
swarm
```bash
$ docker swarm init
$ docker stack deploy -c docker-compose-deps-mysql.yml hawkbit
```
# Access
| Service / Container | URL | Login | A | B | C |
|--------------------------|--------------------------------------------------|-------------|----------|----------|----------|
| hawkBit Update Server | [http://localhost:8080/](http://localhost:8080/) | admin:admin | &#10003; | &#10003; | &#10003; |
| hawkBit Device Simulator | [http://localhost:8083/](http://localhost:8083/) | - | | | &#10003; |
| MySQL | localhost:3306/hawkbit | root | | &#10003; | &#10003; |
| RabbitMQ | [http://localhost:15672](http://localhost:15672) | guest:guest | | &#10003; | &#10003; |
# Configuration
You can override application.properties by setting an environment variable SPRING_APPLICATION_JSON for hawkbit
container.
```
hawkbit:
image: "hawkbit/hawkbit-update-server:latest-mysql"
environment:
SPRING_APPLICATION_JSON: '{
"spring.datasource.url": "jdbc:mariadb://mysql:3306/hawkbit",
"spring.rabbitmq.host": "rabbitmq",
"spring.rabbitmq.username": "guest",
"spring.rabbitmq.password": "guest",
"spring.datasource.username": "root",
"hawkbit.server.im.users[0].username": "hawkbit",
"hawkbit.server.im.users[0].password": "{noop}isAwesome!",
"hawkbit.server.im.users[0].firstname": "Eclipse",
"hawkbit.server.im.users[0].lastname": "HawkBit",
"hawkbit.server.im.users[0].permissions": "ALL"
}'
```

View File

@@ -1,48 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
services:
# ---------------------
# MySQL service
# ---------------------
mysql:
image: "mysql:8.0"
environment:
MYSQL_DATABASE: "hawkbit"
# MYSQL_USER: "root" is created by default in the container for mysql 8.0+
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
restart: always
ports:
- "3306:3306"
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
timeout: 20s
retries: 10
labels:
NAME: "mysql"
# ---------------------
# RabbitMQ service
# ---------------------
rabbitmq:
image: "rabbitmq:3-management-alpine"
hostname: "rabbitmq"
environment:
RABBITMQ_DEFAULT_VHOST: "/"
RABBITMQ_DEFAULT_USER: "guest"
RABBITMQ_DEFAULT_PASS: "guest"
ports:
- "15672:15672"
- "5672:5672"
deploy:
restart_policy:
condition: on-failure

View File

@@ -1,44 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
services:
# ---------------------
# Postgres service
# ---------------------
postgres:
image: "postgres:16.1"
ports:
- "5432:5432"
deploy:
restart_policy:
condition: on-failure
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "admin"
POSTGRES_DB: "hawkbit"
# ---------------------
# RabbitMQ service
# ---------------------
rabbitmq:
image: "rabbitmq:3-management-alpine"
hostname: "rabbitmq"
environment:
RABBITMQ_DEFAULT_VHOST: "/"
RABBITMQ_DEFAULT_USER: "guest"
RABBITMQ_DEFAULT_PASS: "guest"
ports:
- "15672:15672"
- "5672:5672"
deploy:
restart_policy:
condition: on-failure

View File

@@ -1,93 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
include:
- docker-compose-deps-mysql.yml
# EXPERIMENTAL!
services:
# ---------------------
# HawkBit DDI
# ---------------------
hawkbit-ddi:
image: "hawkbit/hawkbit-ddi-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
restart: always
ports:
- "8081:8081"
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit-ddi"
# ---------------------
# HawkBit DMF
# ---------------------
hawkbit-dmf:
image: "hawkbit/hawkbit-dmf-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
restart: always
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit-dmf"
# ---------------------
# HawkBit MGMT
# ---------------------
hawkbit-mgmt:
image: "hawkbit/hawkbit-mgmt-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
volumes:
- artifactrepo:/artifactrepo
restart: always
ports:
- "8080:8080"
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit-mgmt"
# ---------------------
# HawkBit Simple UI
# ---------------------
hawkbit-simple-ui:
image: "hawkbit/hawkbit-simple-ui:latest-mysql"
environment:
- 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit-mgmt:8080"}'
restart: always
ports:
- 8088:8088
labels:
NAME: "hawkbit-simple-ui"
volumes:
artifactrepo:
driver: local

View File

@@ -1,105 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
include:
- docker-compose-deps-mysql.yml
# EXPERIMENTAL!
services:
# ---------------------
# HawkBit DDI
# ---------------------
hawkbit-ddi:
image: "hawkbit/hawkbit-ddi-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
restart: always
ports:
- "8081:8081"
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit-ddi"
# ---------------------
# HawkBit DMF
# ---------------------
hawkbit-dmf:
image: "hawkbit/hawkbit-dmf-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
restart: always
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit-dmf"
# ---------------------
# HawkBit MGMT
# ---------------------
hawkbit-mgmt:
image: "hawkbit/hawkbit-mgmt-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
volumes:
- artifactrepo:/artifactrepo
restart: always
ports:
- "8080:8080"
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit-mgmt"
# # ---------------------
# # HawkBit Vaadin 8 based UI (NOT SUPPORTED!)
# # Outdated and not supported - may not work or lead to problems.
# # NOT Recommended - use it only AT YOUR RISK!
# # ---------------------
# hawkbit-vv8ui:
# image: "hawkbit/hawkbit-vv8-ui:latest-mysql"
# environment:
# - 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
# - 'SPRING_RABBITMQ_HOST=rabbitmq'
# - 'SPRING_RABBITMQ_USERNAME=guest'
# - 'SPRING_RABBITMQ_PASSWORD=guest'
# - 'SPRING_DATASOURCE_USERNAME=root'
# volumes:
# - artifactrepo:/artifactrepo
# restart: always
# ports:
# - "8082:8082"
# depends_on:
# mysql:
# condition: service_healthy
# labels:
# NAME: "hawkbit-vv8-ui"
volumes:
artifactrepo:
driver: local

View File

@@ -1,82 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3'
services:
# ---------------------
# RabbitMQ service
# ---------------------
rabbitmq:
image: "rabbitmq:3-management"
restart: always
ports:
- "15672:15672"
- "5672:5672"
labels:
NAME: "rabbitmq"
# ---------------------
# MySQL service
# ---------------------
mysql:
image: "mysql:8.0"
environment:
MYSQL_DATABASE: "hawkbit"
# MYSQL_USER: "root" is created by default in the container for mysql 8.0+
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
restart: always
ports:
- "3306:3306"
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
timeout: 20s
retries: 10
labels:
NAME: "mysql"
# ---------------------
# HawkBit service
# ---------------------
hawkbit:
image: "hawkbit/hawkbit-update-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
volumes:
- artifactrepo:/artifactrepo
restart: always
ports:
- "8080:8080"
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit"
# ---------------------
# HawkBit Simple UI service
# ---------------------
hawkbit-simple-ui:
image: "hawkbit/hawkbit-simple-ui:latest-mysql"
environment:
- 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit:8080"}'
restart: always
ports:
- 8088:8088
labels:
NAME: "hawkbit-simple-ui"
volumes:
artifactrepo:
driver: local

View File

@@ -1,69 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3'
services:
# ---------------------
# RabbitMQ service
# ---------------------
rabbitmq:
image: "rabbitmq:3-management"
restart: always
ports:
- "15672:15672"
- "5672:5672"
labels:
NAME: "rabbitmq"
# ---------------------
# MySQL service
# ---------------------
mysql:
image: "mysql:8.0"
environment:
MYSQL_DATABASE: "hawkbit"
# MYSQL_USER: "root" is created by default in the container for mysql 8.0+
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
restart: always
ports:
- "3306:3306"
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
timeout: 20s
retries: 10
labels:
NAME: "mysql"
# ---------------------
# HawkBit service
# ---------------------
hawkbit:
image: "hawkbit/hawkbit-update-server:latest-mysql"
environment:
- 'SPRING_DATASOURCE_URL=jdbc:mariadb://mysql:3306/hawkbit'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'SPRING_DATASOURCE_USERNAME=root'
volumes:
- artifactrepo:/artifactrepo
restart: always
ports:
- "8080:8080"
depends_on:
mysql:
condition: service_healthy
labels:
NAME: "hawkbit"
volumes:
artifactrepo:
driver: local

View File

@@ -1,45 +0,0 @@
# set Java
ARG JAVA_VERSION=17.0.13_11
# extracts spring layers from the app jar (to optimize boot)
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine as build
ARG HAWKBIT_APP=hawkbit-update-server
ARG HAWKBIT_VERSION=pass_as_buils_arg
ENV BUILD_DIR=/opt/hawkbit_build
ENV APP=${HAWKBIT_APP}
ENV VERSION=${HAWKBIT_VERSION}
COPY KEY .
RUN set -x &&\
apk add --no-cache --virtual build-dependencies gnupg unzip libressl wget &&\
gpg --import KEY &&\
wget -O ${APP}.jar --no-verbose https://repo1.maven.org/maven2/org/eclipse/hawkbit/${APP}/${VERSION}/${APP}-${VERSION}.jar &&\
wget -O ${APP}.jar.asc --no-verbose https://repo1.maven.org/maven2/org/eclipse/hawkbit/${APP}/${VERSION}/${APP}-${VERSION}.jar.asc &&\
gpg --batch --verify ${APP}.jar.asc ${APP}.jar &&\
rm /${APP}.jar.asc /KEY &&\
apk del build-dependencies &&\
mkdir -p ${BUILD_DIR} &&\
cd ${BUILD_DIR} &&\
java -Djarmode=tools -jar /${APP}.jar extract --layers --launcher --destination . &&\
rm /${APP}.jar
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine
RUN addgroup -S hawkbit_group && adduser -D hawkbit -G hawkbit_group
RUN mkdir -p /artifactrepo && chown -R hawkbit /artifactrepo
USER hawkbit
ENV BUILD_DIR=/opt/hawkbit_build
COPY --from=build ${BUILD_DIR}/dependencies/ ./
COPY --from=build ${BUILD_DIR}/spring-boot-loader/ ./
COPY --from=build ${BUILD_DIR}/snapshot-dependencies/ ./
COPY --from=build ${BUILD_DIR}/application/ ./
ARG CONTAINER_PORT=8080
ENV JAVA_OPTS="-Xms768m -Xmx768m -XX:MaxMetaspaceSize=250m -XX:MetaspaceSize=250m -Xss300K -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError"
VOLUME "/artifactrepo"
EXPOSE ${CONTAINER_PORT}
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} org.springframework.boot.loader.launch.JarLauncher ${@}"]

View File

@@ -1,57 +0,0 @@
# set Java
ARG JAVA_VERSION=17.0.13_11
# extracts spring layers from the app jar (to optimize boot)
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine as build
ARG HAWKBIT_APP=hawkbit-update-server
ARG HAWKBIT_VERSION=pass_as_buils_arg
ENV BUILD_DIR=/opt/hawkbit_build
ENV APP=${HAWKBIT_APP}
ENV VERSION=${HAWKBIT_VERSION}
COPY KEY .
RUN set -x &&\
apk add --no-cache --virtual build-dependencies gnupg unzip libressl wget &&\
gpg --import KEY &&\
wget -O ${APP}.jar --no-verbose https://repo1.maven.org/maven2/org/eclipse/hawkbit/${APP}/${VERSION}/${APP}-${VERSION}.jar &&\
wget -O ${APP}.jar.asc --no-verbose https://repo1.maven.org/maven2/org/eclipse/hawkbit/${APP}/${VERSION}/${APP}-${VERSION}.jar.asc &&\
gpg --batch --verify ${APP}.jar.asc ${APP}.jar &&\
rm /${APP}.jar.asc /KEY &&\
mkdir -p ${BUILD_DIR} &&\
cd ${BUILD_DIR} &&\
java -Djarmode=tools -jar /${APP}.jar extract --layers --launcher --destination . &&\
rm /${APP}.jar
ARG MARIADB_DRIVER_VERSION=3.1.4
COPY KEY-mysql .
RUN set -x &&\
gpg --import KEY-mysql &&\
wget -O ${BUILD_DIR}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar --no-verbose https://downloads.mariadb.com/Connectors/java/connector-java-${MARIADB_DRIVER_VERSION}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar &&\
wget -O ${BUILD_DIR}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar.asc --no-verbose https://downloads.mariadb.com/Connectors/java/connector-java-${MARIADB_DRIVER_VERSION}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar.asc &&\
gpg --verify --batch ${BUILD_DIR}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar.asc ${BUILD_DIR}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar &&\
apk del build-dependencies &&\
rm ${BUILD_DIR}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar.asc /KEY-mysql
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine
RUN addgroup -S hawkbit_group && adduser -D hawkbit -G hawkbit_group
RUN mkdir -p /artifactrepo && chown -R hawkbit /artifactrepo
USER hawkbit
ENV BUILD_DIR=/opt/hawkbit_build
COPY --from=build ${BUILD_DIR}/dependencies/ ./
COPY --from=build ${BUILD_DIR}/spring-boot-loader/ ./
COPY --from=build ${BUILD_DIR}/snapshot-dependencies/ ./
COPY --from=build ${BUILD_DIR}/application/ ./
ARG MARIADB_DRIVER_VERSION=3.1.4
COPY --from=build ${BUILD_DIR}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar ./BOOT-INF/lib/
ARG CONTAINER_PORT=8080
ENV JAVA_OPTS="-Dspring.profiles.active=mysql -Xms768m -Xmx768m -XX:MaxMetaspaceSize=250m -XX:MetaspaceSize=250m -Xss300K -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError"
VOLUME "/artifactrepo"
EXPOSE ${CONTAINER_PORT}
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} org.springframework.boot.loader.launch.JarLauncher ${@}"]

View File

@@ -1,38 +0,0 @@
# set Java
ARG JAVA_VERSION=17.0.13_11
# extracts spring layers from the app jar (to optimize boot)
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine as build
ARG HAWKBIT_APP=hawkbit-update-server
ARG HAWKBIT_VERSION=0-SNAPSHOT
ENV BUILD_DIR=/opt/hawkbit_build
ENV APP=${HAWKBIT_APP}
ENV VERSION=${HAWKBIT_VERSION}
COPY org/eclipse/hawkbit/${APP}/${VERSION}/${APP}-${VERSION}.jar ${APP}-${VERSION}.jar
RUN set -x &&\
mkdir -p ${BUILD_DIR} &&\
cd ${BUILD_DIR} &&\
java -Djarmode=tools -jar /${APP}-${VERSION}.jar extract --layers --launcher --destination . &&\
rm /${APP}-${VERSION}.jar
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine
RUN addgroup -S hawkbit_group && adduser -D hawkbit -G hawkbit_group
RUN mkdir -p /artifactrepo && chown -R hawkbit /artifactrepo
USER hawkbit
ENV BUILD_DIR=/opt/hawkbit_build
COPY --from=build ${BUILD_DIR}/dependencies/ ./
COPY --from=build ${BUILD_DIR}/spring-boot-loader/ ./
COPY --from=build ${BUILD_DIR}/snapshot-dependencies/ ./
COPY --from=build ${BUILD_DIR}/application/ ./
ARG CONTAINER_PORT=8080
ENV JAVA_OPTS="-Xms768m -Xmx768m -XX:MaxMetaspaceSize=250m -XX:MetaspaceSize=250m -Xss300K -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError"
VOLUME "/artifactrepo"
EXPOSE ${CONTAINER_PORT}
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} org.springframework.boot.loader.launch.JarLauncher ${@}"]

View File

@@ -1,40 +0,0 @@
# set Java
ARG JAVA_VERSION=17.0.13_11
# extracts spring layers from the app jar (to optimize boot)
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine as build
ARG HAWKBIT_APP=hawkbit-update-server
ARG HAWKBIT_VERSION=0-SNAPSHOT
ENV BUILD_DIR=/opt/hawkbit_build
ENV APP=${HAWKBIT_APP}
ENV VERSION=${HAWKBIT_VERSION}
COPY org/eclipse/hawkbit/${APP}/${VERSION}/${APP}-${VERSION}.jar ${APP}-${VERSION}.jar
RUN set -x &&\
mkdir -p ${BUILD_DIR} &&\
cd ${BUILD_DIR} &&\
java -Djarmode=tools -jar /${APP}-${VERSION}.jar extract --layers --launcher --destination . &&\
rm /${APP}-${VERSION}.jar
FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine
RUN addgroup -S hawkbit_group && adduser -D hawkbit -G hawkbit_group
RUN mkdir -p /artifactrepo && chown -R hawkbit /artifactrepo
USER hawkbit
ENV BUILD_DIR=/opt/hawkbit_build
COPY --from=build ${BUILD_DIR}/dependencies/ ./
COPY --from=build ${BUILD_DIR}/spring-boot-loader/ ./
COPY --from=build ${BUILD_DIR}/snapshot-dependencies/ ./
COPY --from=build ${BUILD_DIR}/application/ ./
ARG MARIADB_DRIVER_VERSION=3.1.4
COPY org/mariadb/jdbc/mariadb-java-client/${MARIADB_DRIVER_VERSION}/mariadb-java-client-${MARIADB_DRIVER_VERSION}.jar ./BOOT-INF/lib/
ARG CONTAINER_PORT=8080
ENV JAVA_OPTS="-Dspring.profiles.active=mysql -Xms768m -Xmx768m -XX:MaxMetaspaceSize=250m -XX:MetaspaceSize=250m -Xss300K -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError"
VOLUME "/artifactrepo"
EXPOSE ${CONTAINER_PORT}
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} org.springframework.boot.loader.launch.JarLauncher ${@}"]

View File

@@ -1,74 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFflTWwBEAC9YoTvzZlCcQSrqPdovEmAlxlIKzPqE+06Pig87dcn+2PJDDnk
9Rl9eDEHCWKrds4mg7lVgzFApI73V7agHj9bqSyPWbp1GtReDvD4QKNEb4RM9XY8
O1rStOTrznhfVIGcoi9wKPTQWk5GXiqh6rawiyZnAfKm9WPZhKaxIi4m0zcTpJQ2
dwbPi0hBpeEMJTyadId4Y+bBAmH2qGKCOi2NXQDGDJ9BOkjLMVmPlgxnj8QBgZlU
gRnVkYNjas/eVcXM5w6BQ884vUuSm35rPelQOflmUAUiCGoE7UAhfrJdd5tOdWbn
9bnCjv1eUyj2hJwJRRwRZjHvsvJygEg7T00Ntur3UN8fich29cjPGzjkilqK1NkR
PZGROchn5MDhSoeUpGXEDL5bPAWHCNLqus6gMx5vNJ2IuNmWrHSlsNy0pkWu88xt
anjZjgX416nY7RPsmvZ1WRr04tegYB2CGO5aQWK1l+k6ciXWLqC23SAgFE/2Edbz
axvc6jJi5cVGvvZAoH8J7wXCF0zFwORypNyXbNoiAQQnlW7LBJtJU6KihkuTjbDJ
1wmphLIdMoPTXLOxVVBTM7rsYa3ev9o9V9Z0dkAv364fO7zc/RpEoqM33NmNTzS8
DUP/TF6JUQftNJL+ExCreDqxlkyTgqf/+s/k1Z1kuYEKdRmk4MILVKGZvQARAQAB
tDFFY2xpcHNlIGhhd2tCaXQgUHJvamVjdCA8aGF3a2JpdC1kZXZAZWNsaXBzZS5v
cmc+iQIcBBABCAAGBQJX5U+YAAoJEJ+itymfUeVDlUIP/1LGRJWJXyzLArdxmb2W
RiWei3feUAf91gN/iZ3WY5/y981ZMHQv2zks4r2fpJYd0Qph35/c4A/tkzkOK/fQ
H9OaTJHgGC0wCQM5BIhHn6ITNcjb6KSURvUj6+EVWQo04ag5pZGINZlJxaDA8HKV
i6OI+NECMrG1m66HLkDh3oeS926ChD7gZ0d5rORJ5csAPPpcUGtClStMYK42p2kT
xAqRfjGZngtW+6veH9JMGwkF97C4LgWENOvIV13+/KCK9XsusfMmWBM2qgr6jEvT
CKJ60u0e+nClL+AZyupr7xxy8834eEYKCmR5QsSnwxTCnl+qgnFTnsBkdSj8RH7q
OYxJHPxXsz9WhnHCgZwfej6lpjAZ/EQ+i9oDqNp3MRCiZBMreqyvHydd+Vg8ff2j
c1gEz4wEuey/qSd0+oFvs60G3ZlWB6zTjMyZshiCkBRmAg6gJHvm5TbUM7aFtLsQ
fB3iepjm858VKUyC0FwieOZdGKoMAOykm/f3fwn8TafszuKMRFxCfpSaEKZ1gsIu
jZsA4OnSaONx+27oK3rlUs/VZGn3mqvbVVIMGijPB314vQDMCgJI6Fk+YOh4Wijd
Bx6QSLiDFG1C9J0RnRi15QQ1ealJf5z8gptrmWmThtoLnYe+GU2WZ67QPFdVapgX
s7/1niGXaVDkseJJvYvRLX7piQI9BBMBCAAnAhsvBQsJCAcDBRUKCQgLBRYCAwEA
Ah4BAheABQJhcaF9BQkS8lWRAAoJEDhcvBx/Zn+ubvIP/0Tp/ymR0vYjLYjRImZw
pKB9OnWkIx+iR2CQ8CdCbsB5gUxYjnOIH4biC1PjojTDukXkty8BeTg7LG9Jn3gY
SdIE02deaMA37q9tI9tYV1t5IDU3nQOzZShLpnQONTmj58w3y5X+/a6YcWMYJflh
LD+IRi1cEgKjUJfXgE/OWG9nQ2GZHnyN12C2ruY5ggRKL71EiT/PtyzgrFhm7MAu
Q1lgJpe2ywskJAuTwIkBO3e1pCEVw2C9Th7yP1w89r5fU0SlDqz9UCJYPaz7STQt
yOW7JyY82as+0JD8Jycq7aCrP2oPkoDK74lmwB1KK5+hA1Lwy0MjatIrChcUqo3b
x/ojozJc5t+z4TtXckn8ugUf0EoRpTVfsfzTI85Ty1MEBRJc3vloqsbO0pYSUhqO
fO0I/anW4HI/N5acpCInU2Xtx1S+Wr4XGSgCAKvSWwr82bofiW/O5+yhZP18cRXO
PyVSCAHJsuA1qiYhuyTotAGLCOSPSbxQd5zCURvctkS69hzyIQOkRWtQ9p9PnHqh
YSeecFmJyEkuhGGkMUkJ/oA/+NBgjAt+johm+ud6JmU8B5W+CblMM04QnkTIzEXv
v3ns1K/BQY7sDj5uSV95N25fwxsLgbQepS2qVIt2ion8rRjrK8bWeKZ0podBoyqP
SQZvG7RWxsxxmK+OSheYCbNluQINBFfpH/UBEACmUhTkZ6xoDjZ/z6J0gSejOl3t
okqzw+5o5RRav/sKajOkc1emM8+49F+VJGYUF6KCnnTE1+kvBheNuOhVqKp08qnq
vGSjSSHo1wb6ldi8Jk69Zozd7TjGmlER6IVQ2rxdy216tWpYoLnM6ATXBjTfjoGB
a0m9xgv2nHvXDYQTRuxn+DC6mE5hFuUu1uawovCF4xAk7bB+6w+wAQYN2hpNF6cS
aiyL8NFa36jGh1lJbKAROTx88RKpy+aeOE+lW8IeSx0hYSpQFfKuDo2STIiMt0yp
64Gn8itQ3VcYE6tSB1U2kI26Iw3UCL7ov2Dfrh8s/vFgHziQsr5BI7TcGm+P4PkJ
rYNHB5OZNoJDNo55HYpb2SB/a1sslsigzY6Jctx8Y3ls+9lVzY4O96s4JEOJXBxW
R36x9sbexSTJX7U1JhMlhNGdo2OxCY0YF8jSYju/TMQdW35fS24l4/lBwwnWW8uo
GJmBlAMVWDi+1yEMsVO/YmUt+xvIb5TZ/aIsDeZq7IVFL7HVkV4gQ2xfBKoufVZe
+yWeRXxxOziFMVvVKSPMLz1duNjY9QkyDZdYt5aO+/qlUa91FWU+66Nui73dIx89
J1g+o6tfh5fjYjroZe5cxzNu70cXySTs6nI/1xijwumIeO7Eeb9UwUtyRqCW5fBk
KXq6IhEH4gkmZ37aNwARAQABiQREBBgBCAAPAhsCBQJhcaGpBQkS7oM0AinBXSAE
GQEIAAYFAlfpH/UACgkQYzG4E+kpfODUmw//bnjhZ7cPq7Nqu4QBjqtiz9w/3e0r
lPo/L1HLMySthE0JSl/SHELN3Pk+AG6UODuRGhL72BAFZj46LJPc5+7MYlq87w27
34UCuoUes2wStiwe8k5MwYd6E/FoIWwqnkw6iTJeOz1L+clFbF+ER5m4KO6spkRo
jyfGvuUDzprZnaMmhL9IRr7M8muGkynsSzOH1PpPnvJLqWPX0yAhO0u81KV+4aRW
AuHf7pNylJAr3m6MdguFKJk9pFedfPz54/+sKVkNxh56iLqzDzltPe1bD93qZY7r
TcFzN7B+q24IomanUBW926tQ2uH6Tapx+kXZu30o41dkd+qg6z0M/wH2Qtn6Lqtl
27HujESkePKXm/NHL7RqoXNiexR1nxLvHWv9uhsatO0jqHfbL0fHgXCQJ5Qndx3G
tE9qpmjOdlrwvjI8bI4IOshodD3p47DUDNpnYbylH5amy5bmOBNkDx1SWZU9waOS
3pDPdWWQIHeBd8QRNuf1iwJINv67AorpQH2hFwD0JKgmge2o3fXbyV3Kuar1kr0o
Fuby/558nnBOZLX/LaHWjITM/N4KbXl7UfDLO+NNXdkMLdvDYn15IBDDDX8rV4P9
EzuhdLkRouu0qAHmnVI7oNiUq+ywZnkB8jry0avtIjtZt396UknbqgYyllBZyUoR
A/BWn2kVKxNfh1gJEDhcvBx/Zn+u9iYP/29K+v7jGqsK5fQWZPW8tIvYod3Ssazd
1OtDfyCh0D8G1fbGe9If6NO93ldKRaAwdzZbb2ZfiEDksyi8jnQ7E7qxEk3cwAqp
yXKxdE/PNvBNxH3aYUBcf+YAIq2FR0uJ/1WyNIDekQaQ9/C2/Vd6UuDEUpZj5VU+
6wUCNElEZ7iJ2YkBvs0vrsfnwb3D/hb2d9Hx+YapvHWiFcuUn3MYHimjM4BM40cF
7MDlF0wmQ9zb7sc6j0yFM75leyhVnAhXtT3m3MxQJBSCw5ltgzreOuN6gNi6Infw
g2iQtpqsC2O5pXXpbnLquQYbkld5huN5e+8u0AFyNo7n5oPjFBmdR30H01CC34fT
zifDj1FWR3XD5EdPAoovIyMDUGE1tlR6yHFKbZ6xA0JVqI9S3BCwJRK+etocynhg
hTiG7CNpFsDc0/38XpITS0fl4KXvSQQHIMlotKWJmySnhih3PSceH07b4yTOyDYB
p1/Ag3Jp1rTyG+f8CIKR4M1iMf4e+iODPmBiBQXomEG2T6EZ1Hp9J+0NV10naGSI
wkd6imNhAkSSRLTxknWP7Ig+zM5cgEYS+Y/rH+hg8Xc1He6EUnRTr1wzh+NS7sN2
uO1Lt48WdtkwZE0b5hmSZUnEQRgzr+Xb+IDzpWDhFtCfY4YbBwuSvXNK4pIYSnBo
6rDlQqDuQF4/
=YbPD
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,40 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.6
Comment: Hostname: pgp.mit.edu
mQENBFSTDbABCADuZ2k4NIsmhrSyAw/49GQugqPF40P0ldkTPkKDx8b6eNFtPFJbsyw9yKqU
EIS+9eFtIEMLLR4CIHMM56adZe5q5Wp7g/+rnHgTuefVWfMg42Vaxdk8lTQIN2Z3gSsj36DZ
TtO+SmxixFfxHb2YESUvgVzeWIaFBKZCV4JdumniI02RCAPuqxIHKYmhwuqQSpzIAuZQEVvM
qSwFBUOr+CSf3+YzQ/PmFqldlQOQKbSE6G2H7E1mMhRBI07uryo1gDSM42DSFcZ+eQCzCHQr
CNC+2TtBrPkmPNU7TpngtjBthjwF/qJVVX8/q+syv524E1MtO+uXwf4PvrFJ537SkfdHABEB
AAG0OE1hcmlhREIgRW50ZXJwcmlzZSBTaWduaW5nIEtleSA8c2lnbmluZy1rZXlAbWFyaWFk
Yi5jb20+iEYEEhEIAAYFAlTeJRQACgkQy8sIKhu5Q9tQ8wCfXu/gtMah1J9a+CB1RDKt2s4C
alIAn0LqQcsEib4zrHgBeMwp6Wvre/qZiQE4BBMBAgAiBQJUkw2wAhsDBgsJCAcDAgYVCAIJ
CgsEFgIDAQIeAQIXgAAKCRDOGj3V48lPSbWuCACnykjC688qarR5aCJOkjQVruc+3GaM/8Mk
8sXT8GZisJyTott6o++tdjx4GLvnBZFssLDfnZwza9rS79GJAdHqshk4t6V8GqTK8OG2IHJk
XKG0xASUTWV3+oLA2Dbw4ILmgWZxncHTnmEx+x2DGUWTshfwrqBMFy0ksKjeWMnFSzOgbTRW
1Z7z3U4cm8dZWNAD6bNQbZBaXDUk/FOTFpGwXqB7DR/y6AMpJq2i+orD0gTW5yhdSsMasHpP
5YCcztONl9Ft08EggkzhwQSzdP+R0eI6uf/wnB9G2nkGQxHsXe1oc1UqOEQpdJgPhEv4lkFP
4izB1Ix/x4YjhlkXZqGziQIcBBIBCAAGBQJU3iVrAAoJEJFxGJmV5FqejVIP/0Qm+CWS+UZ9
39wUkV/kvfbvhCiVMQmtJDWUJVWRYDXZsfxgdAs4RaKlIrvXShUbWSrGCPwLJkg+FBjXpXqy
/1Qf/TXHrlGGDTZ+SUOfU4O0+HKNqjGdQf3yZdJzoMySY0HdE7eob74ITqnZVjL/bZXsJzZi
xxkqhXZxHi4ToHJkDE75rO2kjYXpaOdg90MiS2nvJm9pexnVvLWIfsPYfkxHaJ3WV+HOZixT
MYKtgiPG6ebiYdOTdbfY8d7uHIxoaqiednBqjpMGygb+YL3SYOWi/rj6LzLs4Z8ISM2OJg01
2DYL6bsIkHWbf0EcuSVdZ4o5l8V+Z055KI3vRwFadU/fpBHvV1EuXcQNOgKvc19KnoG2RIMQ
/aGVekwzbxqunY2syuQjTEycJPJ02c4r0+o31ge+BQl0K8gmn3F2geS+JqjKNXdJtLYzH3bw
upKKsXmacOUAzyM+ic5BtYkDWiNAxy9Az2OxunXjeFnBjVxJxqVbSbZMlziT1I8I8QHtNNzg
yhd3rmTU3w0oQiVM7XmGPeat09QW8/ift/ABN4t0RdVCTyBtdrzUsI/eIb8NOBLw0gkAgyNe
jiMb8H4WGd4CggA9TGmN/OOpDd0PWSWWR+05oU5LeJAAuWdqSUWGr8qiAXWSnv9Jg9y0SC2C
D7XV0eudrAy94uqeooeVh+x8iQIcBBIBCAAGBQJV8eBgAAoJEEHdwLQNpW8iwDIP/RDSgy1S
43q6SMmJiOyok+kqTBaGKNqouN3TV7vual8sS77vpe/o3sr9SrcAsdiFf4Rq81aJ61ZwJ5JI
0ZnhfJhSOo/3CJiLHsQ/XH1hurmjS0VRtYiZDe8lbLHhPWJsnC96LyPrg4pHCF8SH/XmUN9F
rqq3izeezh1fOsxjPwLixtzaf3yoQI6JzFq+ENzs0PB7JzYnrcO8oGrtVdRJUQIHg3B7Kq0B
c4rc4QPNFxPTxXfQiQtkTzkJHc8I956WFkcxnXxcEJXYdre3LVBnlNkQmvyT48Z5z/jZmBWf
NFqHvndFhGgPMrlgzuMjiEnvjx1jbk2dxQNC/Ugfq2PfTsng8rsjtLTaPoSV/csfCM3Thimm
Wcs1tqfMb9q2uFRG+kR9o8w+3TY5SkY611YqSWpBcAghixOaEGrcyDwBARVZDEEfzyWCqSEd
eQsUrsNYhAiVYI+ubYNKO9rtI+SZi5EtD5nwSKLNZFwDxvRX9PIbaT2vsRNzjqeMOkpjDg7S
79lMicr7idOon4dpLl411HpClV8MnuWmekAa/L9Ee52J50ti3Rx7MDgPISJi9ZykqpPrxmt1
A+9ZkKE6VB63nTMBOpLUh0zD4yFHYjAUyDpSTH3SLNtVu3UfkLJ+Nr7AAKoV9YQgTmu3wSPR
FsnHsQksxFhCqGYdUKyfRsobs/Ns
=ovQp
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,82 +0,0 @@
hawkBit Docker Build
===
This directory contains docker files for building both hawkBit docker flavours:
* _standard_ - hawkBit images without mysql driver
* _mysql_ - with MariaDB Java connector with support for MySQL.
Both flavours of are almost the same, just mysql has in addition a MariaDB Java connector and is started, by default,
with mysql Spring profile.
For every flavour there are two build types:
* _release_ - uses officially released hawkBit versions, downloading them from https://repo1.maven.org
* _development/dev_ - uses the local maven repository with built by developer (or just downloaded from any maven
repository) hawkBit applications
## Build overview
Building images supports the following build arguments (i.e. ARG-s which could be passed using _--build-arg_):
* _JAVA_VERSION_ - **[OPTIONAL, if not set a default is used]** the Java version of the eclipse-temurin jre-alpine base
image to be used.
* _HAWKBIT_APP_ - **[OPTIONAL, if not set _hawkbit-update-server_ is used]** the application to be build. Currently,
there is just _hawkbit-update-server_ but in future, if hawkBit is split to micro-services, there could be different
micro-service apps.
* _HAWKBIT_VERSION_ - **[OPTIONAL, if not set a default, should be the last officially released version, is used]** the
application version
* _CONTAINER_PORT_ - **[OPTIONAL, if not set 8080 is used]** on which the app opens the http server (if available)
* _MARIADB_DRIVER_VERSION_ (mysql flavours only!) - **[OPTIONAL, if not set a default is used]** the version of MariaDB
connector to be used
Additionally, tge _development_ builds shall be started with docker build context the local maven repository
## Build standard
Standard flavour could be build, for example, with (fixed version 0.4.1 is just an example):
```shell
docker build --build-arg HAWKBIT_APP=hawkbit-update-server --build-arg HAWKBIT_VERSION=0.4.1 -t hawkbit_update_server:0.4.1 . -f Dockerfile
```
or just by:
```shell
docker build --build-arg HAWKBIT_VERSION=0.4.1 -t hawkbit_update_server:0.4.1 .
```
having that docker uses by default _Dockerfile_ and the _hawkbit-update-server_ is the default _HAWKBIT_APP_.
To build standard development docker images, e.g. snapshot based, you could use something like:
```shell
docker build -t hawkbit_update_server:0-SNAPSHOT -f Dockerfile_dev ~/.m2/repository
```
Note that here you have to use your maven repository containing the hawkBit app as docker build context, in the example
case _~/.m2/repository_
## Build mysql
Mysql flavour could be build, for example, with:
```shell
docker build --build-arg HAWKBIT_APP=hawkbit-update-server --build-arg HAWKBIT_VERSION=0.4.1 -t hawkbit_update_server:0.4.1-mysql . -f Dockerfile-mysql
```
or just by:
```shell
docker build --build-arg -t hawkbit_update_server:0.4.1-mysql --build-arg HAWKBIT_VERSION=0.4.1 . -f Dockerfile-mysql
```
having that the _hawkbit-update-server_ is the default _HAWKBIT_APP_.
To build development mysql docker images, e.g. snapshot based, you could use something like:
```shell
docker build -t hawkbit_update_server:0-SNAPSHOT-mysql -f Dockerfile_dev-mysql ~/.m2/repository
```
Note that here you have to use your maven repository containing the hawkBit app as docker build context, in the example
case _~/.m2/repository_

View File

@@ -1,56 +0,0 @@
#!/bin/bash
#
# Copyright (c) 2023 Bosch.IO GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
set -xe
# Usage: builds all docker images. Use:
# -v <version> to pass version
# -f <flavour> to pass flavour. "mysql" stands for MySQL while all the rest (and default) is assumed Standard
# -r <local maven repository> the local maven repository the already built application jars are located into
VERSION=0-SNAPSHOT
FLAVOUR="standard"
MVN_REPO=~/.m2/repository
while getopts v:f:r: option
do
case "${option}"
in
v)VERSION=${OPTARG};;
f)FLAVOUR=${OPTARG};;
r)MVN_REPO=${OPTARG};;
esac
done
echo "hawkBit version : ${VERSION}"
echo "docker image flavour : ${FLAVOUR}"
echo "maven repository : ${MVN_REPO}"
if [ ${FLAVOUR} == "mysql" ]
then
DOCKER_FILE="Dockerfile_dev-mysql"
TAG_SUFFIX="-mysql"
else
DOCKER_FILE="Dockerfile_dev"
TAG_SUFFIX=""
fi
echo "docker file : ${DOCKER_FILE}"
function build() {
docker build -t hawkbit/$1:${VERSION}${TAG_SUFFIX} -t hawkbit/$1:latest${TAG_SUFFIX} --build-arg HAWKBIT_APP=$1 --build-arg HAWKBIT_VERSION=${VERSION} -f ${DOCKER_FILE} "${MVN_REPO}"
}
build "hawkbit-ddi-server"
build "hawkbit-dmf-server"
build "hawkbit-mgmt-server"
build "hawkbit-simple-ui"
build "hawkbit-update-server"