-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
141 lines (138 loc) · 3.76 KB
/
docker-compose.yaml
File metadata and controls
141 lines (138 loc) · 3.76 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
137
138
139
140
141
services:
client:
image: node:22-alpine3.22
working_dir: /app
volumes:
- ./client:/app
- ./refiner/openapi.json:/app/shared/openapi.json
command: sh -c "npm i && npm run dev"
ports:
- "8081:8081"
depends_on:
- refiner-service
refiner-service:
image: python:3.14-slim
platform: linux/amd64
command: sh -c "pip install -r requirements.txt -r requirements-dev.txt && uvicorn app.asgi:app --host 0.0.0.0 --port 8080 --reload"
working_dir: /app
volumes:
- ./refiner:/app
ports:
- "8080:8080"
extra_hosts:
- "localhost:host-gateway"
environment:
- PIP_ROOT_USER_ACTION=ignore
- ENV=local
- VERSION=local
- DB_URL=postgresql://postgres@db:5432/refiner
- DB_PASSWORD=refiner
- SESSION_SECRET_KEY=super-secret-key
- AUTH_PROVIDER=keycloak
- AUTH_CLIENT_ID=refinerclient
- AUTH_CLIENT_SECRET=5yXLmlYFPYeQh4HOsO1MvqaLHlVj5aKv
- AUTH_ISSUER=http://localhost:8082/realms/refiner
- AUTH_ISSUER_INTERNAL=http://auth:8082/realms/refiner
- AWS_REGION=us-east-1
# only used in envs not running on EC2 (ie not on APHL infra)
- AWS_ACCESS_KEY_ID=refiner
- AWS_SECRET_ACCESS_KEY=refiner
- S3_ENDPOINT_URL=http://localstack:4566
- S3_BUCKET_CONFIG=local-config-bucket
- LOG_LEVEL=debug
logging:
driver: "json-file"
depends_on:
- db
- auth
- localstack
lambda:
build:
context: .
dockerfile: Dockerfile.lambda
ports:
- "9000:8080"
environment:
- AWS_ACCESS_KEY_ID=refiner
- AWS_SECRET_ACCESS_KEY=refiner
- S3_ENDPOINT_URL=http://localstack:4566
- S3_BUCKET_CONFIG=local-config-bucket
- VERSION=local
- EICR_INPUT_PREFIX=eCRMessageV2/
- REFINER_INPUT_PREFIX=RefinerInput/
- REFINER_OUTPUT_PREFIX=RefinerOutput/
- REFINER_COMPLETE_PREFIX=RefinerComplete/
depends_on:
- localstack
auth:
image: quay.io/keycloak/keycloak:26.5.6
command:
- "start-dev"
- "--import-realm"
- "--http-port=8082"
- "--hostname-strict=false"
- "--http-enabled=true"
ports:
- "8082:8082"
environment:
- KC_BOOTSTRAP_ADMIN_USERNAME=admin
- KC_BOOTSTRAP_ADMIN_PASSWORD=admin
volumes:
- ./keycloak/exports:/opt/keycloak/data/import
db:
image: postgres:alpine
restart: on-failure
user: postgres
environment:
- POSTGRES_DB=refiner
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=refiner
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 1s
timeout: 5s
retries: 10
volumes:
- ./.justscripts/sql/drop-all.sql:/drop-all.sql
- pgdata:/var/lib/postgresql/data
localstack:
image: localstack/localstack:4
ports:
- "4566:4566"
environment:
- SERVICES=s3
- DEBUG=1
- AWS_ACCESS_KEY_ID=refiner
- AWS_SECRET_ACCESS_KEY=refiner
volumes:
- localstack-data:/var/lib/localstack
- /var/run/docker.sock:/var/run/docker.sock
- ./localstack/s3-init.sh:/etc/localstack/init/ready.d/s3-init.sh
migrate:
image: ghcr.io/amacneil/dbmate:main
working_dir: /app
entrypoint: ["tail", "-f", "/dev/null"]
depends_on:
- db
volumes:
- .:/app
# Run with `docker compose run --rm seed`
seed:
image: python:3.14-slim
working_dir: /app
command: >
sh -c "pip install --no-cache-dir psycopg[binary] python-dotenv &&
python refiner/scripts/seeding/seed_db.py"
profiles: ["seed"]
depends_on:
- db
environment:
- DB_URL=postgresql://postgres@db:5432/refiner
- DB_PASSWORD=refiner
volumes:
- .:/app
volumes:
pgdata:
localstack-data: