I have an example ktor application where I want to test PostgreSQL connection. Cannot find points where I missed. Docker compose file is ok, container is up. When I run locally getting an error. It seems the problem is about application.yml but not sure.
build.gradle
dependencies {
implementation "io.ktor:ktor-server-core-jvm"
implementation "io.ktor:ktor-server-netty-jvm"
implementation "ch.qos.logback:logback-classic:$logback_version"
implementation "io.ktor:ktor-server-config-yaml"
testImplementation "io.ktor:ktor-server-tests-jvm"
testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
implementation "org.jetbrains.exposed:exposed-core:0.50.1"
implementation "org.jetbrains.exposed:exposed-dao:0.50.1"
implementation "org.jetbrains.exposed:exposed-jdbc:0.50.1"
implementation "com.zaxxer:HikariCP:4.0.3"
implementation 'org.postgresql:postgresql:42.1.4'
}
docker-compose.yml
version: '3.7'
services:
database:
image: postgres:14-alpine
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=123456
- POSTGRES_USER=user
- POSTGRES_DB=project1
expose:
- "5432"
application.yml
ktor:
application:
modules:
- com.activity.ApplicationKt.module
deployment:
port: 8080
database:
url:
-jdbc:postgresql://database:5432/project1
driver:
-org.postgresql.Driver
username:
-user
password:
-123456
EXCEPTION
Exception in thread "main" net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for '1' in 'kotlin.collections.LinkedHashMap'
username:
^ at line 12, column 18
at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:165)
at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:206)
at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:533)
at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:111)
at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:84)
at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
at net.mamoe.yamlkt.internal.YamlElementMapSerializer.deserialize(YamlElementSerializer.kt)
at net.mamoe.yamlkt.internal.YamlElementSerializer.deserialize(YamlElementSerializer.kt:40)
at net.mamoe.yamlkt.internal.YamlElementSerializer.deserialize(YamlElementSerializer.kt:30)
at net.mamoe.yamlkt.Yaml.decodeFromString(Yaml.kt:162)
at net.mamoe.yamlkt.Yaml.decodeYamlFromString(Yaml.kt:175)
at io.ktor.server.config.yaml.YamlConfigJvmKt.configFromString(YamlConfigJvm.kt:36)
at io.ktor.server.config.yaml.YamlConfigJvmKt.YamlConfig(YamlConfigJvm.kt:25)
at io.ktor.server.config.yaml.YamlConfigLoader.load(YamlConfig.kt:21)
at io.ktor.server.config.ConfigLoader$Companion.load(ConfigLoaders.kt:33)
at io.ktor.server.config.ConfigLoader$Companion.load$default(ConfigLoaders.kt:26)
at io.ktor.server.engine.CommandLineKt.buildApplicationConfig(CommandLine.kt:112)
at io.ktor.server.engine.CommandLineKt.buildCommandLineEnvironment(CommandLine.kt:33)
at io.ktor.server.engine.CommandLineKt.commandLineEnvironment(CommandLine.kt:98)
at io.ktor.server.netty.EngineMain.main(EngineMain.kt:20)
at com.activity.ApplicationKt.main(Application.kt:7)
Caused by: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for '5' in 'kotlin.collections.LinkedHashMap'
... -org.postgresql.Driver
^ at line 11, column 35
at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:165)
at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:206)
at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:533)
at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:111)
at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:84)
at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
at net.mamoe.yamlkt.internal.YamlElementMapSerializer.deserialize(YamlElementSerializer.kt)
at net.mamoe.yamlkt.internal.YamlElementSerializer.deserialize(YamlElementSerializer.kt:40)
at net.mamoe.yamlkt.internal.YamlElementSerializer.deserialize(YamlElementSerializer.kt:30)
at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:204)
... 21 more
Caused by: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for '1' in 'kotlin.collections.LinkedHashMap'
driver:
^ at line 10, column 16
.......