version: '3.8' services: web: build: . ports: - "5000:5000" environment: - DATABASE_URL=postgresql://linksync:${DB_PASSWORD:-password}@db:5432/linksync - SECRET_KEY=${SECRET_KEY:-$(openssl rand -base64 32)} - ADMIN_USERNAME=${ADMIN_USERNAME:-admin} - ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin123} - DEBUG=${DEBUG:-False} - HOST=${HOST:-0.0.0.0} - PORT=${PORT:-5000} - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5555} depends_on: - db healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s db: image: postgres:15-alpine environment: - POSTGRES_DB=linksync - POSTGRES_USER=linksync - POSTGRES_PASSWORD=${DB_PASSWORD:-password} volumes: - linkdata:/var/lib/postgresql/data - ./config/schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro healthcheck: test: ["CMD", "pg_isready", "-U", "linksync", "-d", "linksync"] interval: 10s timeout: 5s retries: 5 volumes: linkdata: