last config, all working selfnode
This commit is contained in:
parent
fd2005d31e
commit
61d0f3769b
|
|
@ -188,6 +188,9 @@ services:
|
||||||
- ${TUSD_DATA_DIR_HOST:-./data/tusd}:/data
|
- ${TUSD_DATA_DIR_HOST:-./data/tusd}:/data
|
||||||
- /var/run/docker.sock:/var/run/docker.sock # required by conversion pipeline
|
- /var/run/docker.sock:/var/run/docker.sock # required by conversion pipeline
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
cpus: ${CONVERT_PROCESS_CPUS:-0.5}
|
||||||
|
mem_limit: ${CONVERT_PROCESS_MEM:-512m}
|
||||||
|
cpuset: ${CONVERT_CPUSET:-0}
|
||||||
networks: [mynet]
|
networks: [mynet]
|
||||||
|
|
||||||
backend-convert-v3:
|
backend-convert-v3:
|
||||||
|
|
@ -212,6 +215,9 @@ services:
|
||||||
- ${TUSD_DATA_DIR_HOST:-./data/tusd}:/data
|
- ${TUSD_DATA_DIR_HOST:-./data/tusd}:/data
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
cpus: ${CONVERT_V3_CPUS:-1}
|
||||||
|
mem_limit: ${CONVERT_V3_MEM:-2048m}
|
||||||
|
cpuset: ${CONVERT_CPUSET:-0}
|
||||||
networks: [mynet]
|
networks: [mynet]
|
||||||
|
|
||||||
backend-index-scout-v3:
|
backend-index-scout-v3:
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ server {
|
||||||
add_header Access-Control-Allow-Origin $cors_origin always;
|
add_header Access-Control-Allow-Origin $cors_origin always;
|
||||||
add_header Access-Control-Allow-Credentials "true" always;
|
add_header Access-Control-Allow-Credentials "true" always;
|
||||||
add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD" always;
|
add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD" always;
|
||||||
add_header Access-Control-Allow-Headers "Origin, Cache-Control, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, x-admin-token" always;
|
add_header Access-Control-Allow-Headers "Origin, Cache-Control, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, x-admin-token, Tus-Resumable, tus-resumable, Upload-Length, upload-length, Upload-Offset, upload-offset, Upload-Metadata, upload-metadata, Upload-Defer-Length, upload-defer-length, Upload-Concat, upload-concat, x-file-name, x-last-chunk, x-chunk-start, x-upload-id, x-request-id" always;
|
||||||
add_header Vary "Origin" always;
|
add_header Vary "Origin" always;
|
||||||
|
|
||||||
# Вебсокеты (на будущее)
|
# Вебсокеты (на будущее)
|
||||||
|
|
@ -221,4 +221,4 @@ server {
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_set_header X-Request-Id $req_id;
|
proxy_set_header X-Request-Id $req_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
91
start.sh
91
start.sh
|
|
@ -291,6 +291,89 @@ mkdir -p "$BASE_DIR/postgres-data" "$BASE_DIR/data/ipfs" "$BASE_DIR/data/tusd" "
|
||||||
update_env DB_DATA_DIR_HOST "$BASE_DIR/postgres-data"
|
update_env DB_DATA_DIR_HOST "$BASE_DIR/postgres-data"
|
||||||
update_env IPFS_DATA_DIR_HOST "$BASE_DIR/data/ipfs"
|
update_env IPFS_DATA_DIR_HOST "$BASE_DIR/data/ipfs"
|
||||||
update_env TUSD_DATA_DIR_HOST "$BASE_DIR/data/tusd"
|
update_env TUSD_DATA_DIR_HOST "$BASE_DIR/data/tusd"
|
||||||
|
|
||||||
|
# Normalise host mount paths so docker run inside containers resolves them correctly
|
||||||
|
ensure_absolute_host_path() {
|
||||||
|
local key="$1" default="$2"
|
||||||
|
local current
|
||||||
|
current=$(ini_val "$key")
|
||||||
|
if [[ -z "$current" || "$current" != /* ]]; then
|
||||||
|
update_env "$key" "$default"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_absolute_host_path BACKEND_DATA_DIR_HOST "$BASE_DIR/dynamicStorage"
|
||||||
|
ensure_absolute_host_path BACKEND_LOGS_DIR_HOST "$BASE_DIR/app-logs"
|
||||||
|
|
||||||
|
set_env_if_missing() {
|
||||||
|
local key="$1" value="$2"
|
||||||
|
local current
|
||||||
|
current=$(ini_val "$key")
|
||||||
|
if [[ -z "$current" ]]; then
|
||||||
|
update_env "$key" "$value"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
TOTAL_CPUS=$(getconf _NPROCESSORS_ONLN 2>/dev/null || nproc 2>/dev/null || printf '2')
|
||||||
|
if ! [[ "$TOTAL_CPUS" =~ ^[0-9]+$ ]] || [ "$TOTAL_CPUS" -le 0 ]; then
|
||||||
|
TOTAL_CPUS=2
|
||||||
|
fi
|
||||||
|
HALF_CPUS_FLOAT=$(python3 - <<'PY'
|
||||||
|
import os
|
||||||
|
cpus = int(os.environ.get('TOTAL_CPUS', '2'))
|
||||||
|
if cpus <= 1:
|
||||||
|
print('0.5')
|
||||||
|
else:
|
||||||
|
value = cpus / 2
|
||||||
|
if abs(value - int(value)) < 1e-9:
|
||||||
|
print(int(value))
|
||||||
|
else:
|
||||||
|
formatted = f"{value:.2f}"
|
||||||
|
print(formatted.rstrip('0').rstrip('.'))
|
||||||
|
PY
|
||||||
|
)
|
||||||
|
HALF_CPUS_INT=$(( TOTAL_CPUS / 2 ))
|
||||||
|
if [ "$HALF_CPUS_INT" -le 0 ]; then
|
||||||
|
HALF_CPUS_INT=1
|
||||||
|
fi
|
||||||
|
if [ "$HALF_CPUS_INT" -ge "$TOTAL_CPUS" ] && [ "$TOTAL_CPUS" -gt 1 ]; then
|
||||||
|
HALF_CPUS_INT=$((TOTAL_CPUS - 1))
|
||||||
|
fi
|
||||||
|
if [ "$HALF_CPUS_INT" -le 0 ]; then
|
||||||
|
HALF_CPUS_INT=1
|
||||||
|
fi
|
||||||
|
if [ "$HALF_CPUS_INT" -eq 1 ]; then
|
||||||
|
CONVERT_CPUSET="0"
|
||||||
|
else
|
||||||
|
last=$((HALF_CPUS_INT - 1))
|
||||||
|
CONVERT_CPUSET="0-${last}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TOTAL_MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo 2>/dev/null || printf '0')
|
||||||
|
if ! [[ "$TOTAL_MEM_KB" =~ ^[0-9]+$ ]] || [ "$TOTAL_MEM_KB" -le 0 ]; then
|
||||||
|
TOTAL_MEM_KB=$((4096 * 1024))
|
||||||
|
fi
|
||||||
|
HALF_MEM_MB=$(( TOTAL_MEM_KB / 2048 ))
|
||||||
|
if [ "$HALF_MEM_MB" -lt 512 ]; then
|
||||||
|
HALF_MEM_MB=512
|
||||||
|
fi
|
||||||
|
|
||||||
|
set_env_if_missing CONVERT_CPUSET "$CONVERT_CPUSET"
|
||||||
|
set_env_if_missing CONVERT_V3_CPUS "$HALF_CPUS_FLOAT"
|
||||||
|
set_env_if_missing CONVERT_V3_MEM "${HALF_MEM_MB}m"
|
||||||
|
set_env_if_missing CONVERT_PROCESS_CPUS "0.5"
|
||||||
|
set_env_if_missing CONVERT_PROCESS_MEM "512m"
|
||||||
|
set_env_if_missing MEDIA_CONVERTER_CPU_LIMIT "$HALF_CPUS_FLOAT"
|
||||||
|
set_env_if_missing MEDIA_CONVERTER_MEM_LIMIT "${HALF_MEM_MB}m"
|
||||||
|
set_env_if_missing MEDIA_CONVERTER_CPUSET "$CONVERT_CPUSET"
|
||||||
|
if ! grep -qE '^CONVERT_V3_MAX_CONCURRENCY=' "$ENV_FILE"; then
|
||||||
|
if [ "$HALF_CPUS_INT" -gt 2 ]; then
|
||||||
|
update_env CONVERT_V3_MAX_CONCURRENCY "2"
|
||||||
|
else
|
||||||
|
update_env CONVERT_V3_MAX_CONCURRENCY "$HALF_CPUS_INT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if ! grep -qE '^IPFS_GATEWAY_BIND=' "$ENV_FILE"; then
|
if ! grep -qE '^IPFS_GATEWAY_BIND=' "$ENV_FILE"; then
|
||||||
update_env IPFS_GATEWAY_BIND "0.0.0.0"
|
update_env IPFS_GATEWAY_BIND "0.0.0.0"
|
||||||
fi
|
fi
|
||||||
|
|
@ -306,6 +389,14 @@ if ! docker compose version >/dev/null 2>&1 && ! docker-compose --version >/dev/
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
MEDIA_CONVERTER_CONTEXT="$BASE_DIR/converter-module/converter"
|
||||||
|
if [[ -d "$MEDIA_CONVERTER_CONTEXT" ]]; then
|
||||||
|
echo "Building media_converter image from $MEDIA_CONVERTER_CONTEXT ..."
|
||||||
|
docker build -t media_converter:latest "$MEDIA_CONVERTER_CONTEXT"
|
||||||
|
else
|
||||||
|
echo "Warning: converter-module directory not found; skipping media_converter build" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
COMPOSE_FILE_PATH="$SCRIPT_DIR/docker-compose.yml"
|
COMPOSE_FILE_PATH="$SCRIPT_DIR/docker-compose.yml"
|
||||||
COMPOSE_PROJECT=$(python3 "$SCRIPT_DIR/compose_name.py" "$BASE_DIR")
|
COMPOSE_PROJECT=$(python3 "$SCRIPT_DIR/compose_name.py" "$BASE_DIR")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue