mengstack-api/docker-compose.yml
MengStack Dev fbf9af32f0 Initial commit: MengStack Go API framework
Clean public release with:
- Go/Gin/PostgreSQL/Redis architecture
- Multi-tenant support
- JWT authentication
- Docker Compose deployment
- Environment-based configuration
2026-10-03 00:14:40 +08:00

60 lines
1.6 KiB
YAML

version: '3.8'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: ${DB_NAME:-mengstack}
POSTGRES_USER: ${DB_USER:-postgres}
POSTGRES_PASSWORD: ${DB_PASSWORD:-mengstack_dev}
ports:
- "${DB_PORT:-5432}:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres}"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "${REDIS_PORT:-6379}:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
api:
build: .
ports:
- "${SERVER_PORT:-2222}:2222"
environment:
MENGSTACK_SERVER_PORT: ${SERVER_PORT:-2222}
MENGSTACK_SERVER_MODE: ${SERVER_MODE:-debug}
MENGSTACK_DATABASE_HOST: postgres
MENGSTACK_DATABASE_PORT: 5432
MENGSTACK_DATABASE_USER: ${DB_USER:-postgres}
MENGSTACK_DATABASE_PASSWORD: ${DB_PASSWORD:-mengstack_dev}
MENGSTACK_DATABASE_DBNAME: ${DB_NAME:-mengstack}
MENGSTACK_DATABASE_SSLMODE: disable
MENGSTACK_REDIS_ADDR: redis:6379
MENGSTACK_REDIS_PASSWORD: ${REDIS_PASSWORD:-}
MENGSTACK_REDIS_DB: ${REDIS_DB:-0}
MENGSTACK_JWT_SECRET: ${JWT_SECRET:-change-me-in-production}
MENGSTACK_JWT_ACCESS_EXPIRY_MINUTES: 30
MENGSTACK_JWT_REFRESH_EXPIRY_DAYS: 7
MENGSTACK_JWT_ISSUER: mengstack
MENGSTACK_LOG_LEVEL: ${LOG_LEVEL:-debug}
MENGSTACK_LOG_FORMAT: ${LOG_FORMAT:-console}
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
volumes:
pgdata: