* fix(storage): 统一 DATA_DIR 目录准备 * docs: 精简 DATA_DIR 部署说明 * fix(compose): 初始化 DATA_DIR 挂载权限 * fix(compose): 安全初始化绑定目录
52 lines
1.5 KiB
YAML
52 lines
1.5 KiB
YAML
services:
|
|
gpt-load-data-init:
|
|
image: ghcr.io/tbphp/gpt-load:v2beta
|
|
user: "0:0"
|
|
entrypoint:
|
|
- /bin/sh
|
|
- -ec
|
|
- |
|
|
data_owner="$$(stat -c '%u' /app/data)"
|
|
if [ "$$data_owner" = "10001" ]; then
|
|
exit 0
|
|
fi
|
|
if [ -n "$$(find /app/data -mindepth 1 -maxdepth 1 -print -quit)" ]; then
|
|
echo "DATA_DIR is non-empty and not owned by UID 10001; refusing to change permissions" >&2
|
|
exit 1
|
|
fi
|
|
chown 10001:10001 /app/data
|
|
chmod 0700 /app/data
|
|
restart: "no"
|
|
volumes:
|
|
- ${DATA_DIR:-./data}:/app/data
|
|
|
|
gpt-load:
|
|
image: ghcr.io/tbphp/gpt-load:v2beta
|
|
# build:
|
|
# context: .
|
|
# dockerfile: Dockerfile
|
|
ports:
|
|
- "${BIND_ADDRESS:-${HOST:-127.0.0.1}}:${PORT:-3001}:${PORT:-3001}"
|
|
- "${OAUTH_CALLBACK_BIND_ADDRESS:-${HOST:-127.0.0.1}}:1455:1455"
|
|
- "${OAUTH_CALLBACK_BIND_ADDRESS:-${HOST:-127.0.0.1}}:54545:54545"
|
|
- "${OAUTH_CALLBACK_BIND_ADDRESS:-${HOST:-127.0.0.1}}:51121:51121"
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
HOST: 0.0.0.0
|
|
PORT: ${PORT:-3001}
|
|
DATA_DIR: /app/data
|
|
depends_on:
|
|
gpt-load-data-init:
|
|
condition: service_completed_successfully
|
|
restart: always
|
|
volumes:
|
|
- ${DATA_DIR:-./data}:/app/data
|
|
stop_grace_period: ${CONTAINER_STOP_GRACE_PERIOD:-15s}
|
|
healthcheck:
|
|
test: wget -q --spider -T 10 -O /dev/null http://localhost:${PORT:-3001}/health
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|