1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88# CI-specific override - minimal services for E2E testing
# Usage: docker compose -f docker-compose.yml -f docker-compose.ci.yml up -d --no-build
services:
api-gateway:
image: equalify-reflow:ci
build:
target: development
volumes:
- ./tests:/app/tests:ro
- ./pytest.ini:/app/pytest.ini:ro
- ./pyproject.toml:/app/pyproject.toml:ro
environment:
- AWS_ENDPOINT_URL_S3=http://floci:4566
- AWS_ENDPOINT_URL_CLOUDWATCH=http://floci:4566
- AWS_ACCESS_KEY_ID=test
- AWS_SECRET_ACCESS_KEY=test
- AWS_PROFILE=
- AWS_DEFAULT_REGION=us-east-1
- AWS_EC2_METADATA_DISABLED=true
- S3_TEMP_BUCKET=equalify-pdf-temp
- S3_RESULTS_BUCKET=equalify-pdf-results
- S3_PUBLIC_URL=http://localhost:4566
- REDIS_URL=redis://redis:6379
- LOG_LEVEL=INFO
- ENVIRONMENT=ci
- ENABLE_METRICS=false
- TELEMETRY_ENABLED=false
- DOCLING_SERVE_URL=http://docling-serve:5001
depends_on:
redis:
condition: service_healthy
floci-init:
condition: service_completed_successfully
docling-serve:
condition: service_healthy
docling-serve:
image: quay.io/docling-project/docling-serve-cpu:latest
container_name: equalify-reflow-docling-serve
environment:
- DOCLING_SERVE_LOAD_MODELS_AT_BOOT=true
- DOCLING_SERVE_ENG_LOC_SHARE_MODELS=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5001/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 120s
networks:
- equalify-network
# Floci - Local AWS emulator for CI (replaces LocalStack). In-memory mode;
# CI runs are ephemeral so no persistent volume is needed.
floci:
image: hectorvent/floci:1.5.3
container_name: equalify-reflow-floci
ports:
- "4566:4566"
environment:
- FLOCI_DEFAULT_REGION=us-east-1
- FLOCI_HOSTNAME=floci
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:4566/ || exit 1"]
interval: 10s
timeout: 5s
retries: 5
networks:
- equalify-network
# Floci init sidecar - creates S3 buckets once Floci reports healthy.
floci-init:
image: amazon/aws-cli:latest
container_name: equalify-reflow-floci-init
entrypoint: ["/bin/sh", "/init-aws.sh"]
environment:
- AWS_ACCESS_KEY_ID=test
- AWS_SECRET_ACCESS_KEY=test
- AWS_DEFAULT_REGION=us-east-1
- AWS_ENDPOINT_URL=http://floci:4566
volumes:
- ./infrastructure/floci/init-aws.sh:/init-aws.sh:ro
depends_on:
floci:
condition: service_healthy
networks:
- equalify-network