| /** |
| * 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' |
| 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 <aleks@apache.org>'] |
| 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/**' |
| } |
| } |
| } |
| } |
| } |
| } |