live_recorder/docker-compose.yml

57 lines
1.7 KiB
YAML

services:
postgres:
image: ${POSTGRES_IMAGE:-postgres:16-alpine}
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-live_recorder}
POSTGRES_USER: ${POSTGRES_USER:-live_recorder}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me}
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-live_recorder} -d ${POSTGRES_DB:-live_recorder}"]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
api:
build:
context: .
dockerfile: src/LiveRecorder.WebApi/Dockerfile
network: host
args:
DOTNET_SDK_IMAGE: ${DOTNET_SDK_IMAGE:-mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim}
DOTNET_RUNTIME_IMAGE: ${DOTNET_RUNTIME_IMAGE:-mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim}
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
ConnectionStrings__DefaultConnection: Host=postgres;Port=5432;Database=${POSTGRES_DB:-live_recorder};Username=${POSTGRES_USER:-live_recorder};Password=${POSTGRES_PASSWORD:-change_me}
volumes:
- ./data:/app/data
- ./records:/app/records
expose:
- "8080"
nginx:
build:
context: ./frontend
dockerfile: Dockerfile
network: host
args:
NODE_IMAGE: ${NODE_IMAGE:-node:22-alpine}
NGINX_IMAGE: ${NGINX_IMAGE:-nginx:1.27-alpine}
VITE_API_BASE_URL: /api
restart: unless-stopped
depends_on:
- api
ports:
- "${HTTP_PORT:-8080}:80"
volumes:
postgres-data: