add postgresql docker

This commit is contained in:
2025-03-27 01:49:56 +01:00
parent d02b2bb049
commit 097981112d
5 changed files with 80 additions and 4 deletions

2
.gitignore vendored
View File

@@ -34,3 +34,5 @@ out/
### VS Code ###
.vscode/
/docker/.env
/docker/*.secret

View File

@@ -2,5 +2,6 @@ Event demo
==========
Admin service URL:
- http://dashboard.traefik.me/dashboard/
- http://redis.traefik.me/
- [Traefik](http://pgadmin.traefik.me/)
- [Redis](http://pgadmin.traefik.me/)
- [pgAdmin](http://pgadmin.traefik.me/)

View File

@@ -52,6 +52,39 @@ tasks.test {
dependsOn("composeUp")
}
tasks.register<Copy>("copyEnv") {
group = "docker"
description = "copy the default dotenv file"
from("/docker")
into("/docker")
rename {
println(it)
it.removeSuffix(".template")
}
include(".env.template")
eachFile {
if (File("docker/$name").exists()) {
exclude()
}
}
doLast {
val files =
listOf(
File("docker/pgadmin.secret"),
File("docker/postgresql.secret"),
)
files.forEach {
if (!it.exists()) {
it.writeText("")
}
}
}
}
tasks.composeUp {
dependsOn("copyEnv")
}
dependencies {
implementation("io.ktor:ktor-server-core-jvm")
implementation("io.ktor:ktor-server-auth-jvm")

2
docker/.env.template Normal file
View File

@@ -0,0 +1,2 @@
POSTGRES_USER=event-demo
PGADMIN_DEFAULT_EMAIL=

View File

@@ -32,6 +32,44 @@ services:
- "traefik.http.routers.redis.rule=Host(`redis.traefik.me`)"
- "traefik.http.services.redis.loadbalancer.server.port=8001"
postgresql:
image: postgres:17.4
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/postgresql_password
POSTGRES_USER: event-demo
secrets:
- postgresql_password
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U event-demo'"]
interval: 1s
timeout: 5s
retries: 10
volumes:
- postgresql_data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: $PGADMIN_DEFAULT_EMAIL
PGADMIN_DEFAULT_PASSWORD_FILE: /run/secrets/pgadmin_password
secrets:
- pgadmin_password
volumes:
- pgadmin_data:/var/lib/pgadmin
labels:
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.traefik.me`)"
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"
secrets:
pgadmin_password:
file: pgadmin.secret
postgresql_password:
file: postgresql.secret
volumes:
redis_data:
redisinsight_data:
postgresql_data:
pgadmin_data: