summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2025-11-28 11:51:32 +0100
committerGitHub2025-11-28 11:51:32 +0100
commitdf670aef05b36fed0c1ffe601894205d6001f486 (patch)
tree5b6bb6fea1a737a3ed7f005dfa4aef0e74714e7a /examples
parentdddd9eadf756c4347aa832e139fccbf5c44adf20 (diff)
chore: cleanup dev settings and examples (#200)
Diffstat (limited to 'examples')
-rw-r--r--examples/deploy/docker-compose.yaml60
-rw-r--r--examples/deploy/env-sample.env47
-rw-r--r--examples/dev/README_TEST_WITH_GPAS.md11
-rw-r--r--examples/dev/docker-compose.dev.yml96
4 files changed, 214 insertions, 0 deletions
diff --git a/examples/deploy/docker-compose.yaml b/examples/deploy/docker-compose.yaml
new file mode 100644
index 0000000..754bb23
--- /dev/null
+++ b/examples/deploy/docker-compose.yaml
@@ -0,0 +1,60 @@
+
+
+services:
+ dnpm-etl-processor:
+ image: ghcr.io/ccc-mf/etl-processor:latest
+ environment:
+ LOGGING_LEVEL_DEV: ${DNPM_LOG_LEVEL:-INFO}
+ SPRING_KAFKA_SECURITY_PROTOCOL: ${DNPM_KAFKA_SECURITY_PROTOCOL:-SSL}
+ SPRING_KAFKA_SSL_TRUST-STORE-TYPE: PKCS12
+ SPRING_KAFKA_SSL_TRUST-STORE-LOCATION: /opt/dnpm-processor/ssl/truststore.jks
+ SPRING_KAFKA_SSL_TRUST-STORE-PASSWORD: ${KAFKA_TRUST_STORE_PASSWORD}
+ SPRING_KAFKA_SSL_KEY-STORE-TYPE: PKCS12
+ SPRING_KAFKA_SSL_KEY-STORE-LOCATION: /opt/dnpm-processor/ssl/keystore.jks
+ SPRING_KAFKA_SSL_KEY-STORE-PASSWORD: ${DNPM_PROCESSOR_KEY_STORE_PASSWORD}
+ SPRING_KAFKA_PRODUCER_COMPRESSION-TYPE: gzip
+ APP_KAFKA_TOPIC: ${DNPM_KAFKA_TOPIC}
+ APP_KAFKA_SERVERS: ${KAFKA_BROKERS}
+ APP_KAFKA_GROUP_ID: ${DNPM_KAFKA_GROUP_ID}
+ APP_KAFKA_RESPONSE_TOPIC: ${DNPM_KAFKA_RESPONSE_TOPIC}
+ APP_REST_URI: ${DNPM_BWHC_REST_URI}
+ APP_REST_USERNAME: ${DNPM_BWHC_REST_USERNAME}
+ APP_REST_PASSWORD: ${DNPM_BWHC_REST_PASSWORD}
+ APP_REST_IS_BWHC: ${DNPM_BWHC_REST_IS_BWHC}
+ APP_SECURITY_ADMIN_USER: ${DNPM_ADMIN_USER}
+ APP_SECURITY_ADMIN_PASSWORD: ${DNPM_ADMIN_PASSWORD}
+ SPRING_DATASOURCE_URL: ${DNPM_DATASOURCE_URL}
+ SPRING_DATASOURCE_PASSWORD: ${DNPM_MARIADB_USER_PW}
+ SPRING_DATASOURCE_USERNAME: ${DNPM_MARIADB_DB}
+ APP_PSEUDONYMIZE_GPAS_SSLCALOCATION: /workspace/opt/dnpm-processor/ssl/mosaic.crt
+ APP_PSEUDONYMIZE_GPAS_PASSWORD: ${DNPM_PSEUDONYMIZE_GPAS_PASSWORD}
+ APP_PSEUDONYMIZE_GPAS_USERNAME: ${DNPM_PSEUDONYMIZE_GPAS_USERNAME}
+ APP_PSEUDONYMIZE_GPAS_TARGET: ${DNPM_PSEUDONYMIZE_GPAS_TARGET}
+ APP_PSEUDONYMIZE_GPAS_URI: ${DNPM_PSEUDONYMIZE_GPAS_URI}
+ APP_PSEUDONYMIZE_PREFIX: ${DNPM_APP_PSEUDONYMIZE_PREFIX}
+ APP_PSEUDONYMIZER: ${DNPM_PSEUDONYMIZE_GENERATOR}
+ volumes:
+ - /etc/localtime:/etc/localtime:ro
+ - /etc/timezone:/etc/timezone:ro
+ #- ${DNPM_TO_SSL_KEYSTORE_LOCATION}:/workspace/opt/dnpm-processor/ssl/keystore.jks:ro
+ #- ${KAFKA_TRUST_STORE_LOCATION}:/workspace/opt/dnpm-processor/ssl/truststore.jks:ro
+ #- ${DNPM_PSEUDONYMIZE_GPAS_SSLCALOCATION}:/workspace/opt/dnpm-processor/ssl/mosaic.crt
+
+ depends_on:
+ - dnpm-monitor-db
+ ports:
+ - "${DNPM_MONITORING_HTTP_PORT:-8080}:8080"
+
+ # todo add volume
+ dnpm-monitor-db:
+ image: mariadb:10
+ environment:
+ MARIADB_DATABASE: ${DNPM_MARIADB_DB}
+ MARIADB_USER: ${DNPM_MARIADB_USER}
+ MARIADB_PASSWORD: ${DNPM_MARIADB_USER_PW}
+ MARIADB_ROOT_PASSWORD: ${DNPM_MARIADB_ROOT_PW}
+ expose:
+ - "3306"
+
+
+
diff --git a/examples/deploy/env-sample.env b/examples/deploy/env-sample.env
new file mode 100644
index 0000000..4888474
--- /dev/null
+++ b/examples/deploy/env-sample.env
@@ -0,0 +1,47 @@
+# monitoring access port
+DNPM_MONITORING_HTTP_PORT=8088
+DNPM_LOG_LEVEL=INFO
+
+# ADMIN USER CREDENTIALS
+DNPM_ADMIN_USER=admin
+DNPM_ADMIN_PASSWORD=
+
+# GPAS or BUILDIN
+DNPM_PSEUDONYMIZE_GENERATOR=BUILDIN
+DNPM_APP_PSEUDONYMIZE_PREFIX=ANONYM
+DNPM_PSEUDONYMIZE_GPAS_URI=
+DNPM_PSEUDONYMIZE_GPAS_TARGET=
+DNPM_PSEUDONYMIZE_GPAS_USERNAME=
+DNPM_PSEUDONYMIZE_GPAS_PASSWORD=
+
+# path to ca root cert if needed
+DNPM_PSEUDONYMIZE_GPAS_SSLCALOCATION=
+
+DNPM_MARIADB_DB=dnpm_monitoring
+DNPM_MARIADB_USER=$DNPM_MARIADB_DB
+DNPM_MARIADB_USER_PW=MySuperSecurePassword111
+DNPM_MARIADB_ROOT_PW=MySuperDuperSecurePassword111
+
+# monitoring data db
+DNPM_DATASOURCE_URL=jdbc:mariadb://dnpm-monitor-db:3306/$DNPM_MARIADB_DB
+
+## TARGET SYSTEMS CONFIG
+# in case of direct access to bwhc enter endpoint url here
+DNPM_BWHC_REST_URI=
+DNPM_BWHC_REST_USERNAME=
+DNPM_BWHC_REST_PASSWORD=
+DNPM_BWHC_REST_IS_BWHC=false
+
+# produce mtb files to this topic - values 'false' disabling kafka processing
+DNPM_KAFKA_TOPIC=false
+KAFKA_BROKERS=false
+DNPM_KAFKA_SECURITY_PROTOCOL=PLAINTEXT
+
+# here we receive responses from bwhc
+DNPM_KAFKA_RESPONSE_TOPIC=dnpm-response
+DNPM_KAFKA_GROUP_ID=dnpm
+
+# SSL or PLAINTEXT
+DNPM_PROCESSOR_KEY_STORE_PASSWORD=
+DNPM_TO_SSL_KEYSTORE_LOCATION=
+
diff --git a/examples/dev/README_TEST_WITH_GPAS.md b/examples/dev/README_TEST_WITH_GPAS.md
new file mode 100644
index 0000000..ff9f62b
--- /dev/null
+++ b/examples/dev/README_TEST_WITH_GPAS.md
@@ -0,0 +1,11 @@
+# Test with gPAS
+1. Download from [Latest Docker-compose version of gPAS](https://www.ths-greifswald.de/gpas/#_download "")
+2. copy `./demo/demo_gpas.sql` into `./sqls` folder
+3. if needed change port mapping
+4. startup via `docker compose up -d`
+
+By default, PSN are created via `localhost:8080/ttp-fhir/fhir/gpas/$pseudonymizeAllowCreate` endpoint
+You can review created PSN via gPAs web interface running at `http://localhost:8080/gpas-web/`
+
+
+
diff --git a/examples/dev/docker-compose.dev.yml b/examples/dev/docker-compose.dev.yml
new file mode 100644
index 0000000..f8f9183
--- /dev/null
+++ b/examples/dev/docker-compose.dev.yml
@@ -0,0 +1,96 @@
+version: '3.7'
+
+services:
+
+ zoo:
+ image: zookeeper:3.9.2
+ restart: unless-stopped
+ ports:
+ - "2181:2181"
+ environment:
+ ZOO_MY_ID: 1
+ ZOO_PORT: 2181
+ ZOO_SERVERS: server.1=zoo:2888:3888;2181
+
+ kafka:
+ image: confluentinc/cp-kafka:7.6.1
+ ports:
+ - "9092:9092"
+ environment:
+ KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka:19092,LISTENER_DOCKER_EXTERNAL://172.17.0.1:9093,LISTENER_EXTERNAL://127.0.0.1:9092
+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT,LISTENER_EXTERNAL:PLAINTEXT
+ KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
+ KAFKA_ZOOKEEPER_CONNECT: zoo:2181
+ KAFKA_BROKER_ID: 1
+ KAFKA_LOG4J_LOGGERS: kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO
+ KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
+ KAFKA_MESSAGE_MAX_BYTES: 5242880
+ KAFKA_REPLICA_FETCH_MAX_BYTES: 5242880
+ KAFKA_COMPRESSION_TYPE: gzip
+ depends_on:
+ - zoo
+ healthcheck:
+ test: kafka-topics --bootstrap-server kafka:9092 --list
+ interval: 30s
+ timeout: 10s
+ retries: 3
+
+ akhq:
+ image: tchiotludo/akhq:0.25.0
+ environment:
+ AKHQ_CONFIGURATION: |
+ akhq:
+ ui-options:
+ topic.show-all-consumer-groups: true
+ topic-data.sort: NEWEST
+ connections:
+ docker-kafka-server:
+ properties:
+ bootstrap.servers: "kafka:19092"
+ ports:
+ - "9000:8080"
+ depends_on:
+ - kafka
+
+ kafka-rest-proxy:
+ image: confluentinc/cp-kafka-rest:7.2.1
+ hostname: kafka-rest-proxy
+ ports:
+ - "8082:8082"
+ environment:
+ # KAFKA_REST_ZOOKEEPER_CONNECT: zoo1:2181
+ KAFKA_REST_LISTENERS: http://0.0.0.0:8082/
+ KAFKA_REST_SCHEMA_REGISTRY_URL: http://kafka-schema-registry:8081/
+ KAFKA_REST_HOST_NAME: kafka-rest-proxy
+ KAFKA_REST_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:19092
+ depends_on:
+ - zoo
+ - kafka
+
+ kafka-connect:
+ image: confluentinc/cp-kafka-connect:7.2.1
+ hostname: kafka-connect
+ ports:
+ - "8083:8083"
+ environment:
+ CONNECT_BOOTSTRAP_SERVERS: "kafka1:19092"
+ CONNECT_REST_PORT: 8083
+ CONNECT_GROUP_ID: compose-connect-group
+ CONNECT_CONFIG_STORAGE_TOPIC: docker-connect-configs
+ CONNECT_OFFSET_STORAGE_TOPIC: docker-connect-offsets
+ CONNECT_STATUS_STORAGE_TOPIC: docker-connect-status
+ CONNECT_KEY_CONVERTER: "org.apache.kafka.connect.storage.StringConverter"
+ CONNECT_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
+ CONNECT_REST_ADVERTISED_HOST_NAME: "kafka-connect"
+ CONNECT_LOG4J_ROOT_LOGLEVEL: "INFO"
+ CONNECT_LOG4J_LOGGERS: "org.apache.kafka.connect.runtime.rest=WARN,org.reflections=ERROR"
+ CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: "1"
+ CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: "1"
+ CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: "1"
+ CONNECT_PLUGIN_PATH: "/usr/share/java,/etc/kafka-connect/jars"
+ #volumes:
+ # - ./connectors:/etc/kafka-connect/jars/
+ depends_on:
+ - zoo
+ - kafka
+ - kafka-rest-proxy