services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-artex} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?请在 .env 设置 POSTGRES_PASSWORD} 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: autumn27/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 ARTEX_UPDATE_GITHUB_TOKEN: ${ARTEX_UPDATE_GITHUB_TOKEN:-} 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: