version: '3.8' services: app: image: ghcr.io/climactic/peeper:latest restart: unless-stopped ports: - '8080:8080' environment: APP_NAME: ${APP_NAME:-Peeper} APP_ENV: ${APP_ENV:-production} APP_KEY: ${APP_KEY} APP_DEBUG: false APP_URL: ${APP_URL:-http://127.0.0.1:8080} DB_CONNECTION: ${DB_CONNECTION:-pgsql} DB_HOST: ${DB_HOST:-db} DB_PORT: ${DB_PORT:-5432} DB_DATABASE: ${DB_DATABASE:-postgres} DB_USERNAME: ${DB_USERNAME:-postgres} DB_PASSWORD: ${DB_PASSWORD} SESSION_DRIVER: ${SESSION_DRIVER:-database} CACHE_STORE: ${CACHE_STORE:-database} volumes: - storage:/var/www/html/storage networks: - peeper-network depends_on: - db healthcheck: test: ['CMD', 'curl', '-f', 'http://127.0.0.1:8080/healthcheck'] interval: 30s timeout: 10s retries: 3 start_period: 30s db: image: postgres:${POSTGRES_VERSION:-17}-alpine restart: always shm_size: 128mb volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME:-postgres} POSTGRES_DB: ${DB_DATABASE:-postgres} ports: - 5432:5432 networks: - peeper-network volumes: postgres_data: storage: networks: peeper-network: driver: bridge