-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
136 lines (125 loc) · 4.62 KB
/
Copy pathdocker-compose.yml
File metadata and controls
136 lines (125 loc) · 4.62 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
services:
db:
image: pgvector/pgvector:pg16
healthcheck:
test: ["CMD-SHELL", "pg_isready -U db-user -d nutrient"]
interval: 3s
timeout: 3s
retries: 10
environment:
POSTGRES_USER: db-user
POSTGRES_PASSWORD: password
POSTGRES_DB: ai_document_assistant
POSTGRES_INITDB_ARGS: --data-checksums
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- 5432:5432
document_engine:
image: "${DOCUMENT_ENGINE_IMAGE:-pspdfkit/document-engine:latest}"
environment:
PGUSER: db-user
PGPASSWORD: password
PGDATABASE: nutrient
PGHOST: db
PGPORT: 5432
# Activation key for your Nutrient Document Engine installation
ACTIVATION_KEY: ${ACTIVATION_KEY}
# Secret token used for authenticating API requests.
API_AUTH_TOKEN: secret
# Base key used for deriving secret keys for the purposes of authentication.
SECRET_KEY_BASE: secret-key-base
# Public key used for verification of JWTs from web clients. It has to be in the PEM format.
JWT_PUBLIC_KEY: |
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmOePeK068cxlRWt7Mgf0
2VaxUhUQYVXo4/aa1ShZKBp7pHWl4JWzegjX09Y8Ltu2GO15n8s0x+2A3BBjIfHD
xILrPrT+A7MRQwVrFOXCJr5LhXb6JA5VGW+TfTZsZd1lKg2Bnxz26A5pppjDIjVl
Dt6KwcnQLeRAV6xZ/H01pIR884IXc6mX3kNxLFS0WcmbmgOCXv3aLCVbMSgubVvc
Yel9CcpYipq7Pe04ArNHaqQWke8/E94tscJgZRfRD1ZolZGF98NMwMwMNe9G53Ug
X2qYtrGSvhsW184brvmC5U69N2Czli5xazyloowpb/dHTjUkhYJkp/Jf5/rjH+pg
RyUyKlxDXhNvpWAVA6UZdrVDCctYhokKiuV4A354L7mz0/cpFkIBzOZbquIBgNlJ
lsHj5Jx+s9Dn5dvaBbddamE2JsOyTzLad8VuZaQtBOwZdFIn5o82fdtEWaZh3CBx
9bymM73XrQXCQnfMSV1SARk7VRruxKnZHS1a8Yy27ppXYiFUw081otk8CECayufZ
b/SbcsnEM7a5dEdVECA+mKLYgvl3fr/svy+6TbTEnHusj6Cngw9SO+4SyEeEd+nG
6ZTjh2UWIAN4hQ3Wccuuq48hWPBo5bdMBDaTpUA/ZqLVU5EKkSnMPY1V4rG3Yu3Y
0jeHR29ZIY18h2Pk/igZd1kCAwEAAQ==
-----END PUBLIC KEY-----
JWT_ALGORITHM: RS256
# Credentials to access the admin dashboard
DASHBOARD_USERNAME: dashboard
DASHBOARD_PASSWORD: secret
# Asset storage backend that is used by Nutrient Document Engine
ASSET_STORAGE_BACKEND: built-in
depends_on:
- db
ports:
- "5000:5000"
example:
build: .
environment:
DOCUMENT_ENGINE_INTERNAL_URL: http://document_engine:5000
# Browser-facing Document Engine URL. This points at the Caddy reverse
# proxy (see the caddy service and Caddyfile) so the SDK, document data and
# Instant traffic are served from the same origin as the app. That avoids
# cross-origin requests that browser privacy features may block.
DOCUMENT_ENGINE_EXTERNAL_URL: http://localhost:8080
API_AUTH_TOKEN: secret
AIA_INTERNAL_URL: http://ai-assistant:4000
AIA_EXTERNAL_URL: http://localhost:4000
depends_on:
- document_engine
ports:
- "3000:3000"
volumes:
- app_db:/app/db
# Reverse proxy that unifies the example app and Document Engine under a single
# origin (http://localhost:8080). Open the example at http://localhost:8080.
# The individual services remain exposed on 3000 and 5000 for debugging.
caddy:
image: caddy:2
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
ports:
- "8080:8080"
depends_on:
- example
- document_engine
ai-assistant:
image: pspdfkit/ai-assistant:latest
environment:
OPENAI_API_KEY: ${OPENAI_API_KEY}
DE_URL: http://document_engine:5000
DE_API_AUTH_TOKEN: secret
PGUSER: db-user
PGPASSWORD: password
PGDATABASE: ai_document_assistant
PGHOST: db
PGPORT: 5432
ACTIVATION_KEY: ${AIA_ACTIVATION_KEY}
API_AUTH_TOKEN: secret
JWT_PUBLIC_KEY: |
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gzhmJ9TDanEzWdP1WG+
0Ecwbe7f3bv6e5UUpvcT5q68IQJKP47AQdBAnSlFVi4X9SaurbWoXdS6jpmPpk24
QvitzLNFphHdwjFBelTAOa6taZrSusoFvrtK9x5xsW4zzt/bkpUraNx82Z8MwLwr
t6HlY7dgO9+xBAabj4t1d2t+0HS8O/ed3CB6T2lj6S8AbLDSEFc9ScO6Uc1XJlSo
rgyJJSPCpNhSq3AubEZ1wMS1iEtgAzTPRDsQv50qWIbn634HLWxTP/UH6YNJBwzt
3O6q29kTtjXlMGXCvin37PyX4Jy1IiPFwJm45aWJGKSfVGMDojTJbuUtM+8P9Rrn
AwIDAQAB
-----END PUBLIC KEY-----
JWT_ALGORITHM: RS256
DASHBOARD_USERNAME: dashboard
DASHBOARD_PASSWORD: secret
SECRET_KEY_BASE: secret-key-base
ports:
- 4000:4000
depends_on:
document_engine:
condition: service_started
db:
condition: service_healthy
volumes:
pgdata:
app_db: