forked from Soju06/codex-lb
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate.sh
More file actions
executable file
·60 lines (54 loc) · 2.14 KB
/
Copy pathupdate.sh
File metadata and controls
executable file
·60 lines (54 loc) · 2.14 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
#!/usr/bin/env bash
set -euo pipefail
container_name="${CODEX_LB_CONTAINER_NAME:-codex-lb-direct}"
image_name="${CODEX_LB_IMAGE_NAME:-codex-lb-server}"
volume_name="${CODEX_LB_VOLUME_NAME:-codex-lb-data}"
env_file="${CODEX_LB_ENV_FILE:-.env.local}"
read_env_value() {
local key="$1"
if [ ! -f "${env_file}" ]; then
return 0
fi
awk -F= -v key="${key}" '$1 == key { sub(/^[^=]*=/, ""); print; exit }' "${env_file}"
}
worker_args=()
if [ -n "${CODEX_LB_DIRECT_UVICORN_WORKERS:-}" ]; then
worker_args=(-e CODEX_LB_UVICORN_WORKERS="${CODEX_LB_DIRECT_UVICORN_WORKERS}")
fi
network_args=()
network_name="${CODEX_LB_DOCKER_NETWORK:-$(read_env_value CODEX_LB_DOCKER_NETWORK)}"
if [ -n "${network_name}" ]; then
docker network inspect "${network_name}" >/dev/null 2>&1 || docker network create "${network_name}" >/dev/null
network_args=(--network "${network_name}")
fi
metrics_args=()
metrics_enabled="${CODEX_LB_METRICS_ENABLED:-$(read_env_value CODEX_LB_METRICS_ENABLED)}"
metrics_port="${CODEX_LB_METRICS_PORT:-$(read_env_value CODEX_LB_METRICS_PORT)}"
case "${metrics_enabled}" in
true|TRUE|1|yes|YES)
metrics_args=(-p "127.0.0.1:${metrics_port:-9090}:${metrics_port:-9090}")
;;
esac
git_sha="$(git rev-parse HEAD)"
docker build --pull --build-arg CODEX_LB_GIT_SHA="${git_sha}" -t "${image_name}" .
echo "Checking migration graph in ${image_name}"
docker run --rm "${image_name}" python -m app.db.migrate check-policy
docker volume create "${volume_name}" >/dev/null
docker rm -f "${container_name}" >/dev/null 2>&1 || true
# Host resource caps (m7i.2xlarge / shared agent host). Override via env.
memory_limit="${CODEX_LB_MEMORY_LIMIT:-6g}"
cpus_limit="${CODEX_LB_CPUS_LIMIT:-6.0}"
pids_limit="${CODEX_LB_PIDS_LIMIT:-8192}"
docker run -d --name "${container_name}" \
--hostname "${container_name}" \
--restart unless-stopped \
--memory "${memory_limit}" --memory-swap "${memory_limit}" \
--cpus "${cpus_limit}" --pids-limit "${pids_limit}" \
"${network_args[@]}" \
--env-file "${env_file}" \
"${worker_args[@]}" \
-p 127.0.0.1:2455:2455 \
-p 127.0.0.1:1455:1455 \
"${metrics_args[@]}" \
-v "${volume_name}":/var/lib/codex-lb \
"${image_name}"