fix: missing .dockerignore
Tests / build (push) Successful in 6m28s
Tests / lint (push) Canceled after 0s
Tests / test (push) Canceled after 6m54s

This commit is contained in:
2026-08-04 23:00:57 +02:00
parent b60e4aa457
commit 9b717f4d34
16 changed files with 90 additions and 63 deletions
+26
View File
@@ -0,0 +1,26 @@
# Version control
.git
.github
# Gradle build outputs / caches (must always be rebuilt fresh inside the image)
.gradle
build/
.kotlin
!gradle/wrapper/gradle-wrapper.jar
# IDE
.idea
.vscode
.run
*.iml
*.iws
*.ipr
# Docker-only local files (secrets/env must never be baked into the image)
docker/.env
docker/*.env.docker
docker/*.secret
# Misc
*.hprof
.gradle-docker-cache/
-34
View File
@@ -58,40 +58,6 @@ tasks.withType<Test>().configureEach {
jvmArgs("-javaagent:$agentJar")
}
}
tasks.test {
dependsOn("copyEnv")
}
tasks.register<Copy>("copyEnv") {
group = "docker"
description = "copy the default dotenv file"
from("docker")
into("docker")
rename {
it.removeSuffix(".template")
}
include(".env.template")
eachFile {
if (File("docker/$name").exists()) {
exclude()
}
}
val files =
buildList {
add(File("docker/postgresql.secret"))
if (!project.hasProperty("ci")) {
add(File("docker/pgadmin.secret"))
}
}
outputs.files(*files.toTypedArray())
doLast {
files.forEach {
if (!it.exists()) {
it.writeText("changeit")
}
}
}
}
dependencies {
implementation("io.ktor:ktor-server-core-jvm")
+13 -1
View File
@@ -1,12 +1,24 @@
Installation
============
To run the stack:
To run the stack in production:
```shell
docker compose -f docker\docker-compose-prod.yaml -p event-demo up -d
```
To run only the app dependencies in development mode and run the app localy (not in docker):
```shell
docker compose -f docker\docker-compose-dev.yaml up -d
```
To run the tests in docker (it's designed for the CI):
```shell
docker compose -f docker\docker-compose-test.yaml up -d
```
Api url:
- [Backend API](http://api.traefik.me/)
- [Frontend web site](http://app.traefik.me/) (WIP)
+3
View File
@@ -0,0 +1,3 @@
REDIS_URL=redis://redis
POSTGRESQL_URL=jdbc:postgresql://postgresql/event-demo
RABBITMQ_URL=rabbitmq
-1
View File
@@ -1 +0,0 @@
PGADMIN_DEFAULT_EMAIL=
+4 -4
View File
@@ -1,5 +1,5 @@
# Stage 1: Cache Gradle dependencies
FROM gradle:latest AS cache
FROM gradle:9.6.1-jdk21-alpine AS cache
RUN mkdir -p /home/gradle/cache_home
ENV GRADLE_USER_HOME=/home/gradle/cache_home
COPY build.gradle.* gradle.properties /home/gradle/app/
@@ -7,7 +7,7 @@ WORKDIR /home/gradle/app
RUN gradle build -i -x check
# Stage 2: Build Application
FROM gradle:latest AS build
FROM gradle:9.6.1-jdk21-alpine AS build
COPY --from=cache /home/gradle/cache_home /home/gradle/.gradle
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
@@ -16,8 +16,8 @@ WORKDIR /home/gradle/src
RUN gradle buildFatJar --no-daemon
# Stage 3: Create the Runtime Image
FROM amazoncorretto:21 AS runtime
FROM eclipse-temurin:21-jre-alpine AS runtime
EXPOSE 8080
RUN mkdir /app
COPY --from=build /home/gradle/src/build/libs/*.jar /app/event-demo-all.jar
COPY --from=build /home/gradle/src/build/libs/*-all.jar /app/event-demo-all.jar
ENTRYPOINT ["java","-jar","/app/event-demo-all.jar"]
-5
View File
@@ -1,5 +0,0 @@
name: event-demo-ci
include:
- path:
- parts/docker-compose-databases.yaml
- parts/docker-compose-databases-expose.yaml
+10 -1
View File
@@ -1,4 +1,4 @@
name: event-demo-test
name: event-demo-dev
include:
- path:
- parts/docker-compose-databases.yaml
@@ -6,3 +6,12 @@ include:
- parts/docker-compose-tools.yaml
- parts/docker-compose-tools-local.yaml
- parts/docker-compose-traefik.yaml
services:
postgresql:
environment:
POSTGRES_PASSWORD: "changeit"
pgadmin:
environment:
PGADMIN_DEFAULT_PASSWORD: "changeit"
+13
View File
@@ -5,3 +5,16 @@ include:
- parts/docker-compose-app.yaml
- parts/docker-compose-tools.yaml
- parts/docker-compose-traefik.yaml
services:
postgresql:
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/postgresql_password
volumes:
- ./postgresql.secret:/run/secrets/postgresql_password:ro
pgadmin:
environment:
PGADMIN_DEFAULT_PASSWORD_FILE: /run/secrets/pgadmin_password
volumes:
- ./pgadmin.secret:/run/secrets/pgadmin_password:ro
+9
View File
@@ -4,3 +4,12 @@ include:
- parts/docker-compose-databases.yaml
- parts/docker-compose-test.yaml
- parts/docker-compose-traefik.yaml
services:
postgresql:
environment:
POSTGRES_PASSWORD: "changeit"
pgadmin:
environment:
PGADMIN_DEFAULT_PASSWORD: "changeit"
+2
View File
@@ -12,6 +12,8 @@ services:
condition: service_healthy
redis:
condition: service_healthy
env_file:
- ../.env.docker
labels:
- "traefik.http.routers.api.rule=Host(`api.traefik.me`)"
- "traefik.http.services.api.loadbalancer.server.port=8080"
@@ -22,7 +22,6 @@ services:
image: postgres:18.4
command: postgres -c 'max_connections=500'
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/postgresql_password
POSTGRES_USER: event-demo
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U event-demo'"]
@@ -31,7 +30,6 @@ services:
retries: 10
volumes:
- postgresql_data:/var/lib/postgresql
- ../postgresql.secret:/run/secrets/postgresql_password:ro
rabbitmq:
image: rabbitmq:4-management-alpine
+2
View File
@@ -15,6 +15,8 @@ services:
condition: service_healthy
redis:
condition: service_healthy
env_file:
- ../.env.docker
volumes:
gradle-cache:
+1 -8
View File
@@ -2,10 +2,7 @@ services:
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: $PGADMIN_DEFAULT_EMAIL
PGADMIN_DEFAULT_PASSWORD_FILE: /run/secrets/pgadmin_password
secrets:
- pgadmin_password
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@event-demo.dev}
volumes:
- pgadmin_data:/var/lib/pgadmin
configs:
@@ -45,9 +42,5 @@ configs:
}
}
secrets:
pgadmin_password:
file: ../pgadmin.secret
volumes:
pgadmin_data:
+3 -3
View File
@@ -13,12 +13,12 @@ jwt {
}
redis {
url = "redis://redis:6379"
url = "redis://localhost:6379"
url = ${?REDIS_URL}
}
postgresql {
url = "jdbc:postgresql://postgresql/event-demo"
url = "jdbc:postgresql://localhost:5432/event-demo"
url = ${?POSTGRESQL_URL}
username = "event-demo"
@@ -29,7 +29,7 @@ postgresql {
}
rabbitmq {
url = "rabbitmq"
url = "localhost"
url = ${?RABBITMQ_URL}
port = "5672"