# Polaris 独立 Compose 项目(第一阶段:宿主机手动发布)。 # # 设计约束(详见 README.md): # - 镜像由 .env 的 POLARIS_IMAGE 以 sha256 digest 固定,缺失时 compose 直接报错 # - 只加入外部网络 net-public(与 nginx 同网);不连 net-db # - 不映射宿主机端口(无 ports:),仅经 nginx 反代访问 # - 无 DB/Redis、无 secrets、无源码/数据卷挂载 # - 应用在镜像内已是 node 非 root,监听 3000(见仓库 Dockerfile,本目录不改其行为) # - HEALTHCHECK 用运行时 Node 原生 fetch 探测 /,不要求 curl 等额外工具 # - 顶层 name 固定项目名为 polaris,规避项目路径/命名歧义 name: polaris services: polaris: # 必填:digest 固定的镜像引用;未设置时 compose 加载即失败并给出提示 image: ${POLARIS_IMAGE:?set POLARIS_IMAGE in .env, e.g. git.labmem.icu//polaris@sha256: — see deploy/README.md} container_name: polaris # net-public 内的 DNS 名,nginx 上游即 http://polaris:3000 restart: unless-stopped # expose 仅作声明用途,不是端口映射;同网络容器本就可直接互访 expose: - "3000" healthcheck: # 运行时镜像只有 node,不假设 curl:Node 22 自带全局 fetch test: - CMD - node - -e - "fetch('http://127.0.0.1:3000/').then((r) => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))" interval: 30s timeout: 5s retries: 3 start_period: 30s networks: - net-public networks: net-public: external: true # 由服务器既有栈提供;名字以 docker network ls 实际输出为准,勿在本文件创建