diff --git a/.gitignore b/.gitignore index 6ef2681c..5947ec2b 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ out/ ### Jenv ### .java-version + +.env diff --git a/Dockerfile b/Dockerfile index 16e3aec0..07762fd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM eclipse-temurin:21-jdk-alpine -EXPOSE 8080:8080 +EXPOSE ${PORT:-8080}:${PORT:-8080} RUN mkdir /app COPY /build/libs/matrikkel-bygning-egenregistrering-all.jar /app/app.jar ENTRYPOINT ["java", "-Dlogback.configurationFile=logback-cloud.xml", "-jar","/app/app.jar"] diff --git a/README.md b/README.md index fd106745..500968f9 100644 --- a/README.md +++ b/README.md @@ -23,26 +23,18 @@ Databasen kan startes med docker compose: $ docker-compose up db -d ``` -Flagget `-d` gjør at loggene fra containeren ikke skrives til stdout. Dersom du ønsker det kan du droppe flagget. +Flagget `-d` gjør at containeren kjøres i detached modus og loggene fra containeren ikke skrives til stdout. Dersom du +ønsker det kan du droppe flagget. -### Integrasjon mot matrikkel APIet +### Kjøring av applikasjon -Som standard brukes det en stub/mock mot matrikkel APIet når applikasjonen kjører lokalt. -For å endre til å gå mot et faktisk kjørende matrikkel, må propertien `matrikkel.useStub` settes til `false` -i [application-local.conf](./src/main/resources/application-local.conf) +Når databasen kjører, kan du kjøre opp applikasjonen enten lokalt, eller som en Docker container. Før du gjør dette må +du bygge applikasjonen, dette kan gjøres med gradle: -I tillegg må følgende miljøvariabler være satt (f.eks. i Run Configurations i IntelliJ) - -``` -MATRIKKEL_BASE_URL // Kan settes for å overstyre default miljø -MATRIKKEL_USERNAME -MATRIKKEL_PASSWORD +```sh +$ ./gradlew build ``` -### Kjøring av applikasjon - -Når databasen kjører, kan du kjøre opp applikasjonen enten lokalt, eller som en Docker container. - Hvis du vil kjøre appen som en Docker container kan du kjøre: ```sh @@ -52,9 +44,38 @@ $ docker-compose up web -d Ellers er det bare å kjøre opp applikasjonen som ønsket via IntelliJ eller kommandolinje. Ingen spesielle hensyn som er nødvendig rundt miljøkonfigurasjon, det skal ha sane defaults. +#### Håndtering av portkonflikter + +Applikasjonen er satt opp til å håndtere bruk av andre porter enn default 8080 og 8081. Hvis du ønsker å bruke dette kan +du opprette en fil ved navn `.env` på rot i prosjektet. Denne filen blir ignorert av git og sjekkes ikke inn. Sett så +følgende variabler: + +``` +PORT= +INTERNAL_PORT= +``` + +`PORT` brukes for selve applikasjonen, mens `INTERNAL_PORT` brukes for interne endepunkter som metrikker og +helsesjekker. + +### Integrasjon mot matrikkel APIet + +Som standard brukes det en stub/mock mot matrikkel APIet når applikasjonen kjører lokalt. +For å endre til å gå mot et faktisk kjørende matrikkel, må propertien `matrikkel.useStub` settes til `false` +i [application-local.conf](./src/main/resources/application-local.conf) + +I tillegg må følgende miljøvariabler være satt (f.eks. i Run Configurations i IntelliJ) + +``` +MATRIKKEL_BASE_URL // Kan settes for å overstyre default miljø +MATRIKKEL_USERNAME +MATRIKKEL_PASSWORD +``` + ### Integrasjonstester -Prosjektet inneholder noen integrasjonstester som ligger under [src/integrationTest](src/integrationTest). Testene bruker blant annet +Prosjektet inneholder noen integrasjonstester som ligger under [src/integrationTest](src/integrationTest). Testene +bruker blant annet testcontainers for å kjøre opp en database som bruke under testene. Testene er definert med en egen task som kan kjøres slik: diff --git a/docker-compose.yaml b/docker-compose.yaml index 432cb332..c5f076cb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,9 +2,11 @@ services: web: build: . ports: - - "8080:8080" + - "${PORT:-8080}:${PORT:-8080}" environment: DB_URL: postgresql://db:5432/postgres + PORT: "${PORT:-8080}" + INTERNAL_PORT: "${INTERNAL_PORT:-8081}" depends_on: db: condition: service_healthy diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/Application.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/Application.kt index 9432090d..50e66234 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/Application.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/Application.kt @@ -23,15 +23,18 @@ import no.kartverket.matrikkel.bygning.services.EgenregistreringsService import no.kartverket.matrikkel.bygning.services.HealthService fun main() { + val internalPort = System.getenv("INTERNAL_PORT")?.toIntOrNull() ?: 8081 + val port = System.getenv("PORT")?.toIntOrNull() ?: 8080 + embeddedServer( factory = Netty, - port = 8081, + port = internalPort, module = Application::internalModule, ).start(wait = false) embeddedServer( factory = Netty, - port = 8080, + port = port, module = Application::mainModule, watchPaths = listOf("classes"), ).start(wait = true) diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/plugins/OpenAPI.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/plugins/OpenAPI.kt index a2ef68aa..e81045e8 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/plugins/OpenAPI.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/plugins/OpenAPI.kt @@ -1,7 +1,6 @@ package no.kartverket.matrikkel.bygning.plugins import io.bkbn.kompendium.core.plugin.NotarizedApplication -import io.bkbn.kompendium.json.schema.KotlinXSchemaConfigurator import io.bkbn.kompendium.oas.OpenApiSpec import io.bkbn.kompendium.oas.info.Info import io.ktor.server.application.* @@ -15,6 +14,5 @@ fun Application.configureOpenAPI() { version = "0.1", ), ) - schemaConfigurator = KotlinXSchemaConfigurator() } } diff --git a/src/main/resources/application-local.conf b/src/main/resources/application-local.conf index b9a39001..e6242a1a 100644 --- a/src/main/resources/application-local.conf +++ b/src/main/resources/application-local.conf @@ -1,5 +1,6 @@ storage { jdbcURL = "postgresql://localhost:5432/postgres" + jdbcURL = ${?DB_URL} username = "postgres" password = "postgres" }