Files
homelab-app-template/docker-compose.yml
T

51 lines
1.4 KiB
YAML

# Base compose — defines the three services. The TrueNAS override
# (docker-compose.truenas.yml) layers homelab port/secret specifics on top.
#
# Replace __PROJECT__ before first push (container names + db credentials).
# This base is intentionally LAN/dev-shaped; the override hardens it for TrueNAS.
services:
db:
image: postgres:16-alpine
container_name: __PROJECT__-db
environment:
POSTGRES_USER: __PROJECT__
POSTGRES_DB: __PROJECT__
POSTGRES_PASSWORD: __PROJECT___dev
volumes:
- pgdata:/var/lib/postgresql/data
# In dev you may publish 5432; the TrueNAS override drops it (internal-only).
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U __PROJECT__"]
interval: 10s
timeout: 5s
retries: 5
backend:
build: ./backend
container_name: __PROJECT__-backend
depends_on:
db:
condition: service_healthy
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/__PROJECT__
SPRING_DATASOURCE_USERNAME: __PROJECT__
SPRING_DATASOURCE_PASSWORD: __PROJECT___dev
ports:
- "8080:8080"
frontend:
build: ./frontend
container_name: __PROJECT__-frontend
depends_on:
- backend
environment:
BACKEND_URL: http://backend:8080
ports:
- "3000:3000"
volumes:
pgdata:
name: __PROJECT___pgdata