-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.lambda.yml
More file actions
136 lines (129 loc) · 4.84 KB
/
Copy pathdocker-compose.lambda.yml
File metadata and controls
136 lines (129 loc) · 4.84 KB
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Local Lambda test harness using the AWS Lambda Runtime Interface Emulator (RIE).
#
# Usage:
# cp .env.lambda.example .env.lambda # adjust values as needed
# make lambda-up # build image and start all services
# make lambda-test # invoke the API handler
# make lambda-test-price # invoke the price-refresh handler
# make lambda-test-trading # invoke the trading-agent handler
# make lambda-down # tear everything down
#
# Each Lambda service exposes the RIE on a dedicated host port:
# lambda-api -> http://localhost:9010
# lambda-price-refresh -> http://localhost:9011
# lambda-trading-agent -> http://localhost:9012
#
# MinIO provides a local S3-compatible store reachable at http://localhost:9000.
# The MinIO console is at http://localhost:9001 (same credentials as MINIO_ROOT_*).
#
# No real AWS credentials are required; dummy values are used throughout.
#
# All three Lambda services share the same image (allotmint-lambda:latest).
# Only lambda-api carries the build: stanza so the image is built once;
# lambda-price-refresh and lambda-trading-agent reference it via image: only.
# The handler is selected at runtime via the command: override.
services:
minio:
image: minio/minio:latest
container_name: allotmint-lambda-minio
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
healthcheck:
test: ["CMD-SHELL", "wget -q --spider http://localhost:9000/minio/health/live || exit 1"]
interval: 5s
timeout: 5s
retries: 10
networks:
- lambda-test
minio-setup:
image: minio/mc:latest
container_name: allotmint-lambda-minio-setup
restart: on-failure
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 $${MINIO_ROOT_USER:-minioadmin} $${MINIO_ROOT_PASSWORD:-minioadmin} &&
mc mb --ignore-existing local/$${DATA_BUCKET:-allotmint-local} &&
echo 'Bucket ready: '$${DATA_BUCKET:-allotmint-local}
"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
DATA_BUCKET: ${DATA_BUCKET:-allotmint-local}
networks:
- lambda-test
lambda-api:
build:
context: .
dockerfile: backend/Dockerfile.lambda
image: allotmint-lambda:latest
container_name: allotmint-lambda-api
command: ["backend.lambda_api.handler.lambda_handler"]
ports:
- "9010:8080"
environment:
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-us-east-1}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-test}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-test}
AWS_ENDPOINT_URL: http://minio:9000
DATA_BUCKET: ${DATA_BUCKET:-allotmint-local}
DATA_BRANCH: ${DATA_BRANCH:-main}
APP_ENV: ${APP_ENV:-local}
DISABLE_AUTH: ${DISABLE_AUTH:-true}
GOOGLE_AUTH_ENABLED: ${GOOGLE_AUTH_ENABLED:-false}
JWT_SECRET: ${JWT_SECRET:-dev-secret-not-for-production}
CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:3000,http://localhost:5173}
depends_on:
minio-setup:
condition: service_completed_successfully
networks:
- lambda-test
lambda-price-refresh:
image: allotmint-lambda:latest
container_name: allotmint-lambda-price-refresh
command: ["backend.lambda_api.price_refresh.lambda_handler"]
ports:
- "9011:8080"
environment:
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-us-east-1}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-test}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-test}
AWS_ENDPOINT_URL: http://minio:9000
DATA_BUCKET: ${DATA_BUCKET:-allotmint-local}
DATA_BRANCH: ${DATA_BRANCH:-main}
APP_ENV: ${APP_ENV:-local}
ALLOTMINT_ENABLE_TRADING_AGENT: ${ALLOTMINT_ENABLE_TRADING_AGENT:-false}
depends_on:
minio-setup:
condition: service_completed_successfully
networks:
- lambda-test
lambda-trading-agent:
image: allotmint-lambda:latest
container_name: allotmint-lambda-trading-agent
command: ["backend.lambda_api.trading_agent.lambda_handler"]
ports:
- "9012:8080"
environment:
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-us-east-1}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-test}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-test}
AWS_ENDPOINT_URL: http://minio:9000
DATA_BUCKET: ${DATA_BUCKET:-allotmint-local}
DATA_BRANCH: ${DATA_BRANCH:-main}
APP_ENV: ${APP_ENV:-local}
depends_on:
minio-setup:
condition: service_completed_successfully
networks:
- lambda-test
networks:
lambda-test:
driver: bridge