services: postgres: image: postgres:18-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-ipcheck} POSTGRES_USER: ${POSTGRES_USER:-ipcheck} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-ipcheck} -d ${POSTGRES_DB:-ipcheck}"] interval: 10s timeout: 5s retries: 5 server: image: ${IPCHECK_SERVER_IMAGE:-ipcheck/server:local} build: context: .. dockerfile: Dockerfile.server restart: unless-stopped ports: - "${IPCHECK_HTTP_PORT:-8080}:8080" environment: ConnectionStrings__Postgres: Host=postgres;Database=${POSTGRES_DB:-ipcheck};Username=${POSTGRES_USER:-ipcheck};Password=${POSTGRES_PASSWORD} depends_on: postgres: condition: service_healthy agent: image: ${IPCHECK_AGENT_IMAGE:-ipcheck/agent:local} build: context: .. dockerfile: Dockerfile.agent restart: unless-stopped cap_add: - NET_RAW environment: IpCheck__ServerUrl: http://server:8080 IpCheck__LocationId: ${IPCHECK_LOCATION_ID} IpCheck__SyncIntervalSeconds: ${IPCHECK_SYNC_INTERVAL_SECONDS:-30} depends_on: server: condition: service_healthy volumes: postgres-data: