/** * 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:21' platforms { platform { architecture = System.getProperty("os.arch").equals("aarch64")?"arm64":"amd64" os = 'linux' } } } to { image = 'fineract-custom' tags = [ "${project.version}", 'latest' ] } container { creationTime = 'USE_CURRENT_TIMESTAMP' mainClass = 'org.apache.fineract.ServerApplication' 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-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 'com.mysql:mysql-connector-j' 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/**' } } } } } }