chore: format

This commit is contained in:
Sun-ZhenXing
2026-01-01 17:18:52 +08:00
parent 1c33225b70
commit 9c25970445
36 changed files with 450 additions and 300 deletions

View File

@@ -25,7 +25,15 @@ services:
cpus: ${BIFROST_CPU_RESERVATION:-0.10}
memory: ${BIFROST_MEMORY_RESERVATION:-128M}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/health"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:8080/health",
]
interval: 30s
timeout: 10s
retries: 3
@@ -39,14 +47,22 @@ services:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
- "--web.console.templates=/usr/share/prometheus/consoles"
ports:
- "${PROMETHEUS_PORT:-29090}:9090"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9090/-/healthy"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:9090/-/healthy",
]
interval: 30s
timeout: 10s
retries: 3
@@ -74,7 +90,15 @@ services:
ports:
- "${GRAFANA_PORT:-23000}:3000"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:3000/api/health",
]
interval: 30s
timeout: 10s
retries: 3

View File

@@ -25,7 +25,15 @@ services:
cpus: ${BOLT_DIY_CPU_RESERVATION:-0.5}
memory: ${BOLT_DIY_MEMORY_RESERVATION:-512M}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5173/"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:5173/",
]
interval: 30s
timeout: 10s
retries: 3

View File

@@ -74,7 +74,15 @@ services:
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/health"]
test:
[
"CMD",
"wget",
"--quiet",
"--tries=1",
"--spider",
"http://localhost/health",
]
interval: 30s
timeout: 10s
retries: 3

View File

@@ -9,7 +9,7 @@ x-defaults: &defaults
services:
bytebot-desktop:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}bytebot-ai/bytebot-desktop:${BYTEBOT_VERSION:-edge}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/bytebot-ai/bytebot-desktop:${BYTEBOT_VERSION:-edge}
ports:
- "${BYTEBOT_DESKTOP_PORT_OVERRIDE:-9990}:9990"
environment:
@@ -32,7 +32,7 @@ services:
bytebot-agent:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}bytebot-ai/bytebot-agent:${BYTEBOT_VERSION:-edge}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/bytebot-ai/bytebot-agent:${BYTEBOT_VERSION:-edge}
depends_on:
bytebot-desktop:
condition: service_healthy
@@ -64,7 +64,7 @@ services:
bytebot-ui:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}bytebot-ai/bytebot-ui:${BYTEBOT_VERSION:-edge}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/bytebot-ai/bytebot-ui:${BYTEBOT_VERSION:-edge}
depends_on:
bytebot-agent:
condition: service_healthy

View File

@@ -41,7 +41,11 @@ services:
cpus: ${CLICKHOUSE_CPU_RESERVATION:-1.0}
memory: ${CLICKHOUSE_MEMORY_RESERVATION:-1G}
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1"]
test:
[
"CMD-SHELL",
"wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1",
]
interval: 30s
timeout: 10s
retries: 3

View File

@@ -66,7 +66,15 @@ services:
elasticsearch:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
test:
[
"CMD",
"wget",
"--quiet",
"--tries=1",
"--spider",
"http://localhost:8080/health",
]
interval: 30s
timeout: 10s
retries: 5
@@ -93,7 +101,11 @@ services:
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-conductor} -d ${POSTGRES_DB:-conductor}"]
test:
[
"CMD-SHELL",
"pg_isready -U ${POSTGRES_USER:-conductor} -d ${POSTGRES_DB:-conductor}",
]
interval: 10s
timeout: 5s
retries: 5
@@ -118,7 +130,8 @@ services:
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
test:
["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5

View File

@@ -1,28 +0,0 @@
# Dify version
DIFY_VERSION="0.18.2"
# Database configuration
POSTGRES_USER="dify"
POSTGRES_PASSWORD="difypass"
POSTGRES_DB="dify"
# Redis configuration
REDIS_PASSWORD=""
# Application configuration
SECRET_KEY="sk-xxxxxx"
LOG_LEVEL="INFO"
# API URLs
DIFY_API_URL="http://localhost:5001"
DIFY_APP_URL="http://localhost:3000"
# Port override
DIFY_PORT_OVERRIDE=3000
# Storage type: local, s3, azure-blob, etc.
STORAGE_TYPE="local"
# Vector store type: weaviate, milvus, qdrant, etc.
VECTOR_STORE="weaviate"
WEAVIATE_VERSION="1.28.12"

View File

@@ -1,84 +0,0 @@
# Dify
[English](./README.md) | [中文](./README.zh.md)
This service deploys Dify, an LLM app development platform that combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more.
## Services
- `dify-api`: API service for Dify
- `dify-worker`: Background worker for async tasks
- `dify-web`: Web frontend interface
- `dify-db`: PostgreSQL database
- `dify-redis`: Redis cache
- `dify-weaviate`: Weaviate vector database (optional profile)
## Environment Variables
| Variable Name | Description | Default Value |
| ------------------ | ------------------------------------------ | ------------- |
| DIFY_VERSION | Dify image version | `0.18.2` |
| POSTGRES_USER | PostgreSQL username | `dify` |
| POSTGRES_PASSWORD | PostgreSQL password | `difypass` |
| POSTGRES_DB | PostgreSQL database name | `dify` |
| REDIS_PASSWORD | Redis password (empty for no auth) | `""` |
| SECRET_KEY | Secret key for encryption | (auto) |
| LOG_LEVEL | Log level | `INFO` |
| DIFY_PORT_OVERRIDE | Host port mapping for web interface | `3000` |
| STORAGE_TYPE | Storage type (local, s3, azure-blob, etc.) | `local` |
| VECTOR_STORE | Vector store type (weaviate, milvus, etc.) | `weaviate` |
| WEAVIATE_VERSION | Weaviate version (if using weaviate) | `1.28.12` |
Please modify the `.env` file as needed for your use case.
## Volumes
- `dify_storage`: Storage for uploaded files and generated content
- `dify_db_data`: PostgreSQL data
- `dify_redis_data`: Redis persistence data
- `dify_weaviate_data`: Weaviate vector database data
## Usage
### Start Dify with Weaviate
```bash
docker compose --profile weaviate up -d
```
### Start Dify without Vector Database
```bash
docker compose up -d
```
### Access
- Web Interface: <http://localhost:3000>
- API Docs: <http://localhost:5001/docs>
### First Time Setup
1. Open <http://localhost:3000>
2. Create an admin account
3. Configure your LLM API keys (OpenAI, Azure OpenAI, Anthropic, etc.)
4. Start creating your AI applications
## Notes
- First startup may take a few minutes for database initialization
- Change `SECRET_KEY` in production for security
- For production deployment, consider using external PostgreSQL and Redis
- Supports multiple LLM providers: OpenAI, Azure OpenAI, Anthropic, Google, local models via Ollama, etc.
- Vector database is optional but recommended for RAG capabilities
## Security
- Change default passwords in production
- Use strong `SECRET_KEY`
- Enable authentication on Redis in production
- Consider using TLS for API connections in production
## License
Dify is licensed under Apache License 2.0. See [Dify GitHub](https://github.com/langgenius/dify) for more information.

View File

@@ -1,84 +0,0 @@
# Dify
[English](./README.md) | [中文](./README.zh.md)
这个服务部署 Dify,一个 LLM 应用开发平台,结合了 AI 工作流、RAG 管道、代理能力、模型管理、可观测性功能等。
## 服务
- `dify-api`: Dify API 服务
- `dify-worker`: 后台异步任务 Worker
- `dify-web`: Web 前端界面
- `dify-db`: PostgreSQL 数据库
- `dify-redis`: Redis 缓存
- `dify-weaviate`: Weaviate 向量数据库(可选 profile)
## 环境变量
| 变量名 | 描述 | 默认值 |
| ------------------ | --------------------------------- | ---------- |
| DIFY_VERSION | Dify 镜像版本 | `0.18.2` |
| POSTGRES_USER | PostgreSQL 用户名 | `dify` |
| POSTGRES_PASSWORD | PostgreSQL 密码 | `difypass` |
| POSTGRES_DB | PostgreSQL 数据库名 | `dify` |
| REDIS_PASSWORD | Redis 密码(留空则不需要认证) | `""` |
| SECRET_KEY | 加密密钥 | (自动) |
| LOG_LEVEL | 日志级别 | `INFO` |
| DIFY_PORT_OVERRIDE | Web 界面主机端口映射 | `3000` |
| STORAGE_TYPE | 存储类型(local, s3, azure-blob等) | `local` |
| VECTOR_STORE | 向量库类型(weaviate, milvus等) | `weaviate` |
| WEAVIATE_VERSION | Weaviate 版本(如果使用weaviate) | `1.28.12` |
请根据您的需求修改 `.env` 文件。
## 数据卷
- `dify_storage`: 上传文件和生成内容的存储
- `dify_db_data`: PostgreSQL 数据
- `dify_redis_data`: Redis 持久化数据
- `dify_weaviate_data`: Weaviate 向量数据库数据
## 使用方法
### 启动 Dify 与 Weaviate
```bash
docker compose --profile weaviate up -d
```
### 启动 Dify 不含向量数据库
```bash
docker compose up -d
```
### 访问
- Web 界面: <http://localhost:3000>
- API 文档: <http://localhost:5001/docs>
### 首次设置
1. 打开 <http://localhost:3000>
2. 创建管理员账户
3. 配置您的 LLM API 密钥(OpenAI、Azure OpenAI、Anthropic 等)
4. 开始创建您的 AI 应用
## 注意事项
- 首次启动可能需要几分钟进行数据库初始化
- 生产环境请修改 `SECRET_KEY` 以提高安全性
- 生产环境建议使用外部 PostgreSQL 和 Redis
- 支持多种 LLM 提供商:OpenAI、Azure OpenAI、Anthropic、Google、通过 Ollama 的本地模型等
- 向量数据库是可选的,但建议用于 RAG 功能
## 安全性
- 生产环境请修改默认密码
- 使用强 `SECRET_KEY`
- 生产环境在 Redis 上启用认证
- 生产环境考虑为 API 连接使用 TLS
## 许可证
Dify 采用 Apache License 2.0 许可。更多信息请参见 [Dify GitHub](https://github.com/langgenius/dify)。

View File

@@ -1,185 +0,0 @@
x-defaults: &defaults
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 100m
max-file: "3"
services:
dify-api:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}langgenius/dify-api:${DIFY_VERSION:-0.18.2}
depends_on:
dify-db:
condition: service_healthy
dify-redis:
condition: service_healthy
environment:
- TZ=${TZ:-UTC}
- MODE=api
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- SECRET_KEY=${SECRET_KEY:-sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U}
- DATABASE_URL=postgresql://${POSTGRES_USER:-dify}:${POSTGRES_PASSWORD:-difypass}@dify-db:5432/${POSTGRES_DB:-dify}
- REDIS_HOST=dify-redis
- REDIS_PORT=6379
- REDIS_DB=0
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD:-}@dify-redis:6379/1
- STORAGE_TYPE=${STORAGE_TYPE:-local}
- VECTOR_STORE=${VECTOR_STORE:-weaviate}
- WEAVIATE_ENDPOINT=http://dify-weaviate:8080
volumes:
- dify_storage:/app/api/storage
deploy:
resources:
limits:
cpus: ${DIFY_API_CPU_LIMIT:-1.0}
memory: ${DIFY_API_MEMORY_LIMIT:-2G}
reservations:
cpus: ${DIFY_API_CPU_RESERVATION:-0.5}
memory: ${DIFY_API_MEMORY_RESERVATION:-1G}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5001/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
dify-worker:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}langgenius/dify-api:${DIFY_VERSION:-0.18.2}
depends_on:
dify-db:
condition: service_healthy
dify-redis:
condition: service_healthy
environment:
- TZ=${TZ:-UTC}
- MODE=worker
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- SECRET_KEY=${SECRET_KEY:-sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U}
- DATABASE_URL=postgresql://${POSTGRES_USER:-dify}:${POSTGRES_PASSWORD:-difypass}@dify-db:5432/${POSTGRES_DB:-dify}
- REDIS_HOST=dify-redis
- REDIS_PORT=6379
- REDIS_DB=0
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD:-}@dify-redis:6379/1
- STORAGE_TYPE=${STORAGE_TYPE:-local}
- VECTOR_STORE=${VECTOR_STORE:-weaviate}
- WEAVIATE_ENDPOINT=http://dify-weaviate:8080
volumes:
- dify_storage:/app/api/storage
deploy:
resources:
limits:
cpus: ${DIFY_WORKER_CPU_LIMIT:-1.0}
memory: ${DIFY_WORKER_MEMORY_LIMIT:-2G}
reservations:
cpus: ${DIFY_WORKER_CPU_RESERVATION:-0.5}
memory: ${DIFY_WORKER_MEMORY_RESERVATION:-1G}
dify-web:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}langgenius/dify-web:${DIFY_VERSION:-0.18.2}
depends_on:
dify-api:
condition: service_healthy
environment:
- TZ=${TZ:-UTC}
- NEXT_PUBLIC_API_URL=${DIFY_API_URL:-http://localhost:5001}
- NEXT_PUBLIC_APP_URL=${DIFY_APP_URL:-http://localhost:3000}
ports:
- "${DIFY_PORT_OVERRIDE:-3000}:3000"
deploy:
resources:
limits:
cpus: ${DIFY_WEB_CPU_LIMIT:-0.5}
memory: ${DIFY_WEB_MEMORY_LIMIT:-512M}
reservations:
cpus: ${DIFY_WEB_CPU_RESERVATION:-0.25}
memory: ${DIFY_WEB_MEMORY_RESERVATION:-256M}
dify-db:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}postgres:15-alpine
environment:
- TZ=${TZ:-UTC}
- POSTGRES_USER=${POSTGRES_USER:-dify}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-difypass}
- POSTGRES_DB=${POSTGRES_DB:-dify}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- dify_db_data:/var/lib/postgresql/data
deploy:
resources:
limits:
cpus: ${DIFY_DB_CPU_LIMIT:-0.5}
memory: ${DIFY_DB_MEMORY_LIMIT:-512M}
reservations:
cpus: ${DIFY_DB_CPU_RESERVATION:-0.25}
memory: ${DIFY_DB_MEMORY_RESERVATION:-256M}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
dify-redis:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}redis:7-alpine
command: redis-server --requirepass ${REDIS_PASSWORD:-}
environment:
- TZ=${TZ:-UTC}
volumes:
- dify_redis_data:/data
deploy:
resources:
limits:
cpus: ${DIFY_REDIS_CPU_LIMIT:-0.25}
memory: ${DIFY_REDIS_MEMORY_LIMIT:-256M}
reservations:
cpus: ${DIFY_REDIS_CPU_RESERVATION:-0.1}
memory: ${DIFY_REDIS_MEMORY_RESERVATION:-128M}
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s
dify-weaviate:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}semitechnologies/weaviate:${WEAVIATE_VERSION:-1.28.12}
profiles:
- weaviate
environment:
- TZ=${TZ:-UTC}
- QUERY_DEFAULTS_LIMIT=25
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true
- PERSISTENCE_DATA_PATH=/var/lib/weaviate
- DEFAULT_VECTORIZER_MODULE=none
- CLUSTER_HOSTNAME=node1
volumes:
- dify_weaviate_data:/var/lib/weaviate
deploy:
resources:
limits:
cpus: ${DIFY_WEAVIATE_CPU_LIMIT:-0.5}
memory: ${DIFY_WEAVIATE_MEMORY_LIMIT:-1G}
reservations:
cpus: ${DIFY_WEAVIATE_CPU_RESERVATION:-0.25}
memory: ${DIFY_WEAVIATE_MEMORY_RESERVATION:-512M}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/v1/.well-known/ready"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
volumes:
dify_storage:
dify_db_data:
dify_redis_data:
dify_weaviate_data:

View File

@@ -9,7 +9,7 @@ x-defaults: &defaults
services:
easy-dataset:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}conardli/easy-dataset:${EASY_DATASET_VERSION:-1.5.1}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/conardli/easy-dataset:${EASY_DATASET_VERSION:-1.5.1}
ports:
- "${EASY_DATASET_PORT_OVERRIDE:-1717}:1717"
volumes:

View File

@@ -39,7 +39,7 @@ x-common-env: &common-env
services:
playwright-service:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}firecrawl/playwright-service:${PLAYWRIGHT_VERSION:-latest}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/firecrawl/playwright-service:${PLAYWRIGHT_VERSION:-latest}
environment:
PORT: 3000
PROXY_SERVER: ${PROXY_SERVER:-}
@@ -57,7 +57,7 @@ services:
api:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}firecrawl/firecrawl:${FIRECRAWL_VERSION:-latest}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/firecrawl/firecrawl:${FIRECRAWL_VERSION:-latest}
environment:
<<: *common-env
HOST: 0.0.0.0
@@ -121,7 +121,7 @@ services:
nuq-postgres:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}firecrawl/nuq-postgres:${NUQ_POSTGRES_VERSION:-latest}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/firecrawl/nuq-postgres:${NUQ_POSTGRES_VERSION:-latest}
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}

View File

@@ -37,7 +37,15 @@ services:
cpus: ${GITEA_CPU_RESERVATION:-0.5}
memory: ${GITEA_MEMORY_RESERVATION:-512M}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:3000/",
]
interval: 30s
timeout: 10s
retries: 3
@@ -46,6 +54,8 @@ services:
db:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}postgres:${POSTGRES_VERSION:-17.6}
profiles:
- ${COMPOSE_PROFILES:-}
environment:
- TZ=${TZ:-UTC}
- POSTGRES_USER=${POSTGRES_USER:-gitea}

View File

@@ -13,7 +13,7 @@ services:
context: .
args:
target: runtime
image: ${GHCR_IO_REGISTRY:-ghcr.io/}berriai/litellm:${LITELLM_VERSION:-main-stable}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/berriai/litellm:${LITELLM_VERSION:-main-stable}
# Uncomment these lines to start proxy with a config.yaml file
# volumes:
# - ./config.yaml:/app/config.yaml:ro

View File

@@ -65,12 +65,19 @@ services:
cpus: ${ATTU_CPU_RESERVATION:-0.1}
memory: ${ATTU_MEMORY_RESERVATION:-128M}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:3000/",
]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
milvus_data:

View File

@@ -67,7 +67,7 @@ services:
image: ${GLOBAL_REGISTRY:-}milvusdb/milvus:${MILVUS_VERSION:-v2.6.7}
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
- seccomp:unconfined
environment:
TZ: ${TZ:-UTC}
ETCD_ENDPOINTS: etcd:2379
@@ -120,7 +120,15 @@ services:
cpus: ${ATTU_CPU_RESERVATION:-0.1}
memory: ${ATTU_MEMORY_RESERVATION:-128M}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:3000/",
]
interval: 30s
timeout: 10s
retries: 3

View File

@@ -11,3 +11,9 @@ MINIO_PORT_OVERRIDE_WEBUI=9001
# Timezone
TZ=UTC
# Resource Limits
MINIO_CPU_LIMIT=0.5
MINIO_MEMORY_LIMIT=1G
MINIO_CPU_RESERVATION=0.25
MINIO_MEMORY_RESERVATION=512M

View File

@@ -1 +0,0 @@
/config

View File

@@ -9,7 +9,7 @@ x-defaults: &defaults
services:
minio:
<<: *defaults
image: cgr.dev/chainguard/minio:${MINIO_VERSION:-0.20251015}
image: ${CGR_DEV_REGISTRY:cgr.dev-}/chainguard/minio:${MINIO_VERSION:-0.20251015}
ports:
- "${MINIO_PORT_OVERRIDE_API:-9000}:9000"
- "${MINIO_PORT_OVERRIDE_WEBUI:-9001}:9001"
@@ -29,10 +29,10 @@ services:
deploy:
resources:
limits:
cpus: ${MINIO_CPU_LIMIT:-1.0}
cpus: ${MINIO_CPU_LIMIT:-0.5}
memory: ${MINIO_MEMORY_LIMIT:-1G}
reservations:
cpus: ${MINIO_CPU_RESERVATION:-0.5}
cpus: ${MINIO_CPU_RESERVATION:-0.25}
memory: ${MINIO_MEMORY_RESERVATION:-512M}

View File

@@ -77,7 +77,7 @@ services:
mlflow:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}mlflow/mlflow:${MLFLOW_VERSION:-v2.20.2}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/mlflow/mlflow:${MLFLOW_VERSION:-v2.20.2}
depends_on:
postgres:
condition: service_healthy

View File

@@ -34,7 +34,15 @@ services:
cpus: ${ODOO_CPU_RESERVATION:-0.5}
memory: ${ODOO_MEMORY_RESERVATION:-1G}
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8069/"]
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:8069/",
]
interval: 30s
timeout: 10s
retries: 3

View File

@@ -9,7 +9,7 @@ x-defaults: &defaults
services:
open_webui:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}open-webui/open-webui:${OPEN_WEBUI_VERSION:-main}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/open-webui/open-webui:${OPEN_WEBUI_VERSION:-main}
ports:
- "${OPEN_WEBUI_PORT_OVERRIDE:-8080}:8080"
volumes:

View File

@@ -6,11 +6,8 @@ TZ=UTC
# Pingap Version
# Use version-full for production (includes OpenTelemetry, Sentry, image compression plugins)
# Available tags: latest, full, 0.12.1, 0.12.1-full
PINGAP_VERSION=0.12.1-full
# Container Name (optional, leave empty for auto-generated name)
PINGAP_CONTAINER_NAME=
# Available tags: latest, full, 0.12.7, 0.12.7-full
PINGAP_VERSION=0.12.7-full
# Port Overrides
# HTTP port - exposed on host
@@ -28,7 +25,7 @@ PINGAP_ADMIN_ADDR=0.0.0.0:80/pingap
# Admin username
PINGAP_ADMIN_USER=admin
# Admin password (REQUIRED - set a strong password!)
PINGAP_ADMIN_PASSWORD=changeme
PINGAP_ADMIN_PASSWORD=password
# Resource Limits
PINGAP_CPU_LIMIT=1.0

View File

@@ -49,13 +49,13 @@ A high-performance reverse proxy built on Cloudflare Pingora, designed as a more
| Variable | Description | Default |
| ---------------------------- | ------------------------------------------ | ------------------- |
| `PINGAP_VERSION` | Image version (recommended: `0.12.1-full`) | `0.12.1-full` |
| `PINGAP_VERSION` | Image version (recommended: `0.12.7-full`) | `0.12.7-full` |
| `PINGAP_HTTP_PORT_OVERRIDE` | HTTP port on host | `80` |
| `PINGAP_HTTPS_PORT_OVERRIDE` | HTTPS port on host | `443` |
| `PINGAP_DATA_DIR` | Data directory for persistent storage | `./pingap` |
| `PINGAP_ADMIN_ADDR` | Admin interface address | `0.0.0.0:80/pingap` |
| `PINGAP_ADMIN_USER` | Admin username | `admin` |
| `PINGAP_ADMIN_PASSWORD` | Admin password (REQUIRED) | - |
| `PINGAP_ADMIN_PASSWORD` | Admin password | `password` |
| `PINGAP_CPU_LIMIT` | CPU limit | `1.0` |
| `PINGAP_MEMORY_LIMIT` | Memory limit | `512M` |
@@ -63,8 +63,8 @@ A high-performance reverse proxy built on Cloudflare Pingora, designed as a more
- `vicanso/pingap:latest` - Latest development version (not recommended for production)
- `vicanso/pingap:full` - Latest development version with all features
- `vicanso/pingap:0.12.1` - Stable version without extra dependencies
- `vicanso/pingap:0.12.1-full` - **Recommended**: Stable version with OpenTelemetry, Sentry, and image compression
- `vicanso/pingap:0.12.7` - Stable version without extra dependencies
- `vicanso/pingap:0.12.7-full` - **Recommended**: Stable version with OpenTelemetry, Sentry, and image compression
### Persistent Storage
@@ -103,7 +103,7 @@ docker compose down
### Production Recommendations
- Use versioned tags (e.g., `0.12.1-full`) instead of `latest` or `full`
- Use versioned tags (e.g., `0.12.7-full`) instead of `latest` or `full`
- Configure appropriate resource limits based on your traffic
- Set up proper monitoring and logging
- Enable HTTPS with valid certificates

View File

@@ -49,13 +49,13 @@
| 变量名 | 说明 | 默认值 |
| ---------------------------- | ------------------------------- | ------------------- |
| `PINGAP_VERSION` | 镜像版本(推荐:`0.12.1-full` | `0.12.1-full` |
| `PINGAP_VERSION` | 镜像版本(推荐:`0.12.7-full` | `0.12.7-full` |
| `PINGAP_HTTP_PORT_OVERRIDE` | 主机 HTTP 端口 | `80` |
| `PINGAP_HTTPS_PORT_OVERRIDE` | 主机 HTTPS 端口 | `443` |
| `PINGAP_DATA_DIR` | 持久化数据目录 | `./pingap` |
| `PINGAP_ADMIN_ADDR` | 管理界面地址 | `0.0.0.0:80/pingap` |
| `PINGAP_ADMIN_USER` | 管理员用户名 | `admin` |
| `PINGAP_ADMIN_PASSWORD` | 管理员密码(必填) | - |
| `PINGAP_ADMIN_PASSWORD` | 管理员密码 | `password` |
| `PINGAP_CPU_LIMIT` | CPU 限制 | `1.0` |
| `PINGAP_MEMORY_LIMIT` | 内存限制 | `512M` |
@@ -63,8 +63,8 @@
- `vicanso/pingap:latest` - 最新开发版(不推荐用于生产环境)
- `vicanso/pingap:full` - 包含所有功能的最新开发版
- `vicanso/pingap:0.12.1` - 不含额外依赖的稳定版
- `vicanso/pingap:0.12.1-full` - **推荐**:包含 OpenTelemetry、Sentry 和图片压缩的稳定版
- `vicanso/pingap:0.12.7` - 不含额外依赖的稳定版
- `vicanso/pingap:0.12.7-full` - **推荐**:包含 OpenTelemetry、Sentry 和图片压缩的稳定版
### 持久化存储
@@ -103,7 +103,7 @@ docker compose down
### 生产环境建议
- 使用带版本号的标签(如 `0.12.1-full`),而非 `latest` 或 `full`
- 使用带版本号的标签(如 `0.12.7-full`),而非 `latest` 或 `full`
- 根据流量情况配置适当的资源限制
- 设置适当的监控和日志记录
- 启用 HTTPS 并使用有效证书

View File

@@ -12,19 +12,18 @@ x-defaults: &defaults
services:
pingap:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}vicanso/pingap:${PINGAP_VERSION:-0.12.1-full}
container_name: ${PINGAP_CONTAINER_NAME:-}
image: ${GLOBAL_REGISTRY:-}vicanso/pingap:${PINGAP_VERSION:-0.12.7-full}
ports:
- "${PINGAP_HTTP_PORT_OVERRIDE:-80}:80"
- "${PINGAP_HTTPS_PORT_OVERRIDE:-443}:443"
volumes:
- ${PINGAP_DATA_DIR:-./pingap}:/opt/pingap
- pingap_data:/opt/pingap
environment:
- TZ=${TZ:-UTC}
- PINGAP_CONF=/opt/pingap/conf
- PINGAP_ADMIN_ADDR=${PINGAP_ADMIN_ADDR:-0.0.0.0:80/pingap}
- PINGAP_ADMIN_USER=${PINGAP_ADMIN_USER:-admin}
- PINGAP_ADMIN_PASSWORD=${PINGAP_ADMIN_PASSWORD:?PINGAP_ADMIN_PASSWORD must be set}
- PINGAP_ADMIN_PASSWORD=${PINGAP_ADMIN_PASSWORD:-password}
command:
- pingap
- --autoreload
@@ -42,3 +41,6 @@ services:
reservations:
cpus: ${PINGAP_CPU_RESERVATION:-0.5}
memory: ${PINGAP_MEMORY_RESERVATION:-256M}
volumes:
pingap_data:

View File

@@ -9,7 +9,7 @@ x-defaults: &defaults
services:
pocketbase:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}muchobien/pocketbase:${PB_VERSION:-0.30.0}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/muchobien/pocketbase:${PB_VERSION:-0.30.0}
environment:
TZ: ${TZ:-UTC}
# Optional ENCRYPTION (Ensure this is a 32-character long encryption key)

View File

@@ -9,7 +9,7 @@ x-defaults: &defaults
services:
stable-diffusion-webui:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}absolutelyludicrous/sdnext:${SD_WEBUI_VERSION:-latest}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/absolutelyludicrous/sdnext:${SD_WEBUI_VERSION:-latest}
ports:
- "${SD_WEBUI_PORT_OVERRIDE:-7860}:7860"
environment:

View File

@@ -17,7 +17,7 @@ services:
webapp:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}triggerdotdev/trigger.dev:${TRIGGER_IMAGE_TAG:-v4.2.0}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/triggerdotdev/trigger.dev:${TRIGGER_IMAGE_TAG:-v4.2.0}
ports:
- "${TRIGGER_PORT:-8030}:3030"
environment:
@@ -312,7 +312,7 @@ services:
supervisor:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}triggerdotdev/supervisor:${TRIGGER_IMAGE_TAG:-v4.2.0}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/triggerdotdev/supervisor:${TRIGGER_IMAGE_TAG:-v4.2.0}
environment:
- TZ=${TZ:-UTC}
# Required settings

View File

@@ -37,7 +37,7 @@ x-defaults: &defaults
services:
windmill-server:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}windmill-labs/windmill:${WINDMILL_VERSION:-main}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/windmill-labs/windmill:${WINDMILL_VERSION:-main}
container_name: windmill-server
ports:
- "${WINDMILL_PORT_OVERRIDE:-8000}:8000"
@@ -82,7 +82,7 @@ services:
windmill-worker:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}windmill-labs/windmill:${WINDMILL_VERSION:-main}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/windmill-labs/windmill:${WINDMILL_VERSION:-main}
container_name: windmill-worker
environment:
# Database configuration
@@ -143,7 +143,7 @@ services:
# Optional: LSP service for code intelligence
windmill-lsp:
<<: *defaults
image: ${GHCR_IO_REGISTRY:-ghcr.io/}windmill-labs/windmill-lsp:${WINDMILL_LSP_VERSION:-latest}
image: ${GHCR_IO_REGISTRY:-ghcr.io}/windmill-labs/windmill-lsp:${WINDMILL_LSP_VERSION:-latest}
container_name: windmill-lsp
profiles:
- dev