services: # Database postgres: image: postgres:15-alpine container_name: cactoide-db environment: POSTGRES_DB: ${POSTGRES_DB:-cactoide_database} POSTGRES_USER: ${POSTGRES_USER:-cactoide} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-cactoide_password} expose: - '${POSTGRES_PORT:-5432}' ports: - '${POSTGRES_PORT:-5432}:5432' volumes: - postgres_data:/var/lib/postgresql/data - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: [ 'CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-cactoide} -d ${POSTGRES_DB:-cactoide_database}' ] interval: 10s timeout: 5s retries: 5 networks: - cactoide-network # Application app: image: ghcr.io/polaroi8d/cactoide/cactoide:${APP_VERSION:-latest} build: . container_name: cactoide-app ports: - '${PORT:-5111}:3000' environment: DATABASE_URL: ${DATABASE_URL:-postgres://cactoide:cactoide_password@postgres:5432/cactoide_database} PORT: 3000 HOSTNAME: ${HOSTNAME:-0.0.0.0} LOG_PRETTY: ${LOG_PRETTY:-true} LOG_LEVEL: ${LOG_LEVEL:-trace} PUBLIC_LANDING_INFO: ${PUBLIC_LANDING_INFO:-true} FEDERATION_INSTANCE: ${FEDERATION_INSTANCE:-true} depends_on: postgres: condition: service_healthy networks: - cactoide-network restart: unless-stopped volumes: postgres_data: networks: cactoide-network: driver: bridge