services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-artex} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?.env 文件中未设置 POSTGRES_PASSWORD,请先运行 install.sh 或手动填写} POSTGRES_DB: ${POSTGRES_DB:-artex} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-artex} -d ${POSTGRES_DB:-artex}"] interval: 5s timeout: 3s retries: 10 restart: unless-stopped artex: image: registry.gitea.mygoband.com/carrydela/artex:${ARTEX_TAG:-latest} depends_on: postgres: condition: service_healthy environment: ARTEX_PG_DSN: postgres://${POSTGRES_USER:-artex}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-artex}?sslmode=disable ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} ARTEX_LLM_PROVIDER: ${ARTEX_LLM_PROVIDER:-} ARTEX_LLM_MODEL: ${ARTEX_LLM_MODEL:-} ARTEX_LLM_BASE_URL: ${ARTEX_LLM_BASE_URL:-} ARTEX_LLM_PROXY: ${ARTEX_LLM_PROXY:-} ports: - "8787:8787" - "127.0.0.1:8788:8788" volumes: # 数据目录(含 jwt.key、SQLite 等)绑定到项目根目录的 data/ # 在宿主机上可直接查看和备份,重建容器数据也不会丢失 - ./data:/app/data # 把项目根目录的 skills 挂载进容器(覆盖镜像内置的 /app/skills) # 修改 skill 后无需重新构建镜像,容器直接读取宿主机上的这些文件 - ./skills:/app/skills restart: unless-stopped volumes: pgdata: