blob: 28b9415f3667a317fdf6a30d2d863407e9aad1bf [file] [log] [blame]
/**
* 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/**'
}
}
}
}
}
}