/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ description = 'Fineract Custom Docker Image' apply plugin: 'java' apply plugin: 'com.google.cloud.tools.jib' apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle" jib { from { image = 'azul/zulu-openjdk-alpine:17' } to { image = 'fineract-custom' tags = [ "${project.version}", 'latest' ] } container { creationTime = 'USE_CURRENT_TIMESTAMP' mainClass = 'org.apache.fineract.ServerApplication' jvmFlags = [ '-Xms1G', '-XshowSettings:vm', '-XX:+UseContainerSupport', '-XX:+UseStringDeduplication', '-XX:MinRAMPercentage=25', '-XX:MaxRAMPercentage=80', '--add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED', '--add-opens=java.base/java.lang=ALL-UNNAMED', '--add-opens=java.base/java.lang.invoke=ALL-UNNAMED', '--add-opens=java.base/java.io=ALL-UNNAMED', '--add-opens=java.base/java.security=ALL-UNNAMED', '--add-opens=java.base/java.util=ALL-UNNAMED', '--add-opens=java.management/javax.management=ALL-UNNAMED', '--add-opens=java.naming/javax.naming=ALL-UNNAMED' ] args = [ '-Duser.home=/tmp', '-Dfile.encoding=UTF-8', '-Duser.timezone=UTC', '-Djava.security.egd=file:/dev/./urandom' ] ports = ['8080/tcp', '8443/tcp'] labels = [maintainer: 'Aleksandar Vidakovic '] user = 'nobody:nogroup' } allowInsecureRegistries = true dependencies { implementation project(':fineract-core') implementation project(':fineract-provider') // NOTE: dynamically load all custom modules file("${rootDir}/custom").eachDir { companyDir -> if('build' != companyDir.name && 'docker' != companyDir.name) { file("${rootDir}/custom/${companyDir.name}").eachDir { categoryDir -> if('build' != categoryDir.name) { file("${rootDir}/custom/${companyDir.name}/${categoryDir.name}").eachDir { moduleDir -> if('build' != moduleDir.name) { implementation project(":custom:${companyDir.name}:${categoryDir.name}:${moduleDir.name}") } } } } } } // NOTE: other custom dependencies implementation 'org.mariadb.jdbc:mariadb-java-client' implementation 'mysql:mysql-connector-java:8.0.33' implementation 'org.postgresql:postgresql' annotationProcessor('org.springframework.boot:spring-boot-autoconfigure-processor') annotationProcessor('org.springframework.boot:spring-boot-configuration-processor') } pluginExtensions { pluginExtension { implementation = 'com.google.cloud.tools.jib.gradle.extension.layerfilter.JibLayerFilterExtension' configuration { filters { filter { glob = '/app/resources/**' } } } } } } // tasks.jibDockerBuild.dependsOn(':fineract-provider:bootJar')