forked from Soju06/codex-lb
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
131 lines (126 loc) · 3.81 KB
/
Copy pathdocker-compose.yml
File metadata and controls
131 lines (126 loc) · 3.81 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
# NOTE: This Compose file defines a SINGLE-REPLICA topology.
# Do not use `docker compose up --scale server=N` — the SQLite default supports
# only one writer and the published host ports collide. Multi-replica deployments
# require the Helm chart with PostgreSQL and leader election (deploy/helm/codex-lb).
services:
server:
build:
context: .
dockerfile: Dockerfile
env_file:
- .env.local
ports:
- "2455:2455"
- "1455:1455"
command:
# uvicorn directly (not `fastapi run`) so --ws-max-size matches the
# websocket ingress budget that app.cli applies in production.
- uvicorn
- app.main:app
- --no-proxy-headers
- --host
- 0.0.0.0
- --port
- "2455"
- --reload
- --ws-max-size
- "134217728"
volumes:
- codex-lb-data:/var/lib/codex-lb
develop:
watch:
- action: sync
path: ./app
target: /app/app
- action: rebuild
path: ./pyproject.toml
- action: rebuild
path: ./uv.lock
- action: rebuild
path: ./Dockerfile
restart: unless-stopped
frontend:
build:
context: ./frontend
dockerfile_inline: |
FROM oven/bun:1.3.14-alpine
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
COPY . .
CMD ["bun", "run", "dev", "--host", "0.0.0.0"]
ports:
- "5173:5173"
environment:
API_PROXY_TARGET: http://server:2455
develop:
watch:
- action: sync
path: ./frontend
target: /app
ignore:
- node_modules/
- action: rebuild
path: ./frontend/package.json
- action: rebuild
path: ./frontend/bun.lock
postgres:
image: postgres:18-alpine
profiles: ["postgres"]
entrypoint:
- sh
- -ceu
- |
if [ -f /var/lib/postgresql/PG_VERSION ]; then
echo >&2 "Detected a pre-Postgres-18 data directory at /var/lib/postgresql."
echo >&2 "Run: docker compose --profile postgres-upgrade run --rm postgres-upgrade"
echo >&2 "Refusing to start postgres:18-alpine before the named volume is upgraded."
exit 1
fi
if [ -f /var/lib/postgresql/data/PG_VERSION ]; then
pg_major="$$(cat /var/lib/postgresql/data/PG_VERSION)"
if [ "$$pg_major" != "18" ]; then
echo >&2 "Detected a nested Postgres $$pg_major data directory at /var/lib/postgresql/data."
echo >&2 "Run pg_upgrade against that data directory before starting postgres:18-alpine."
echo >&2 "For the default Compose volume layout, run: docker compose --profile postgres-upgrade run --rm postgres-upgrade"
exit 1
fi
fi
if [ "$#" -eq 0 ]; then
set -- postgres
fi
exec docker-entrypoint.sh "$@"
- codex-lb-postgres-entrypoint-guard
environment:
POSTGRES_USER: codex_lb
POSTGRES_PASSWORD: codex_lb
POSTGRES_DB: codex_lb
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U codex_lb -d codex_lb"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- codex-lb-postgres-data:/var/lib/postgresql
restart: unless-stopped
postgres-upgrade:
image: pgautoupgrade/pgautoupgrade:18-alpine@sha256:01136fdc26ce0234df32e09f1dd7a43e9a1012c5055c9d04a2f7c789c833ba90
profiles: ["postgres-upgrade"]
environment:
POSTGRES_USER: codex_lb
POSTGRES_PASSWORD: codex_lb
POSTGRES_DB: codex_lb
PGAUTO_ONESHOT: "yes"
volumes:
- codex-lb-postgres-data:/var/lib/postgresql
restart: "no"
networks:
default:
driver: bridge
volumes:
codex-lb-data:
name: codex-lb-data
codex-lb-postgres-data:
name: codex-lb-postgres-data