#
# BinktermPHP docker-compose.yml
#
# Production-ready Docker Compose configuration for BinktermPHP
#
# Usage:
# 1. Copy .env.docker.example to .env and configure
# 2. First run: RUN_SETUP=true docker-compose up -d
# 3. Subsequent runs: docker-compose up -d
#
services:
postgres:
image: postgres:15-alpine
container_name: binkterm-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_NAME:-binkterm}
POSTGRES_USER: ${DB_USER:-binkterm}
POSTGRES_PASSWORD: ${DB_PASS:-changeme}
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- binkterm_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-binkterm}"]
interval: 10s
timeout: 5s
retries: 5
binkterm:
build:
context: .
dockerfile: Dockerfile
container_name: binkterm-app
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
# Database Configuration
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: ${DB_NAME:-binkterm}
DB_USER: ${DB_USER:-binkterm}
DB_PASS: ${DB_PASS:-changeme}
# Site Configuration
SITE_URL: ${SITE_URL:-http://localhost}
SITE_NAME: ${SITE_NAME:-BinktermPHP BBS}
# BBS Configuration
SYSOP_NAME: ${SYSOP_NAME:-Sysop}
FIDONET_ADDRESS: ${FIDONET_ADDRESS:-}
# Session Configuration
SESSION_NAME: BINKTERMPHP
SESSION_LIFETIME: 86400
# DOS Door Configuration
DOSDOOR_HEADLESS: "true"
DOSDOOR_DEBUG_KEEP_FILES: ${DOSDOOR_DEBUG_KEEP_FILES:-false}
DOSDOOR_DOSBOX_PATH: /usr/bin/dosbox-x
DOSDOOR_WS_PORT: 6001
DOSDOOR_WS_BIND_HOST: 0.0.0.0
# Credits System
CREDITS_ENABLED: ${CREDITS_ENABLED:-true}
# Development/Debug
APP_DEBUG: ${APP_DEBUG:-false}
# Admin Daemon (auto-generated if not set)
ADMIN_DAEMON_SECRET: ${ADMIN_DAEMON_SECRET:-}
# Setup flag - set to true on first run to initialize database
RUN_SETUP: ${RUN_SETUP:-false}
ports:
- "${HTTP_PORT:-80}:80"
- "${TELNET_PORT:-2323}:2323"
- "${BINKP_PORT:-24554}:24554"
- "${DOSDOOR_WS_PORT:-6001}:6001"
- "${GEMINI_PORT:-1965}:1965"
volumes:
# Persistent data volumes
- binkterm_data:/var/www/html/data
- binkterm_config:/var/www/html/config
# Optional: Mount door games from host (uncomment to use)
# - ./scripts/dosbox-bridge/dos/doors:/var/www/html/scripts/dosbox-bridge/dos/doors:ro
# Optional: Mount development files for live editing (development only)
# - ./public_html:/var/www/html/public_html
# - ./templates:/var/www/html/templates
# - ./src:/var/www/html/src
networks:
- binkterm_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
binkterm_network:
driver: bridge
volumes:
postgres_data:
driver: local
binkterm_data:
driver: local
binkterm_config:
driver: local
|