---
title: Docker 部署
description: 使用 Docker Compose 部署无限画布
---

# Docker 部署

如果你希望在自己的机器或服务器上运行项目，可以直接使用 Docker Compose。

## 使用发布镜像

```bash
git clone git@github.com:basketikun/infinite-canvas.git
cd infinite-canvas
docker compose up -d
```

启动后访问：

```text
http://localhost:3000
```

## 本地构建镜像

如果需要基于当前源码构建镜像：

```bash
docker compose -f docker-compose.local.yml up -d --build
```

## 文档站镜像

文档站位于 `docs/` 目录，按带服务端能力的 Next.js standalone 应用单独构建，不打进主应用镜像。

使用发布镜像：

```bash
cd docs
docker compose up -d
```

基于当前源码本地构建：

```bash
cd docs
docker compose -f docker-compose.local.yml up -d --build
```

## 数据说明

当前主应用镜像只启动 Next.js。画布、我的素材、生成记录和 AI API Key 默认保存在浏览器本地；第三方提示词由浏览器前端直连拉取，不需要额外挂载数据目录。

## 统计分析（可选）

项目**默认不接入任何统计**：不设置下列环境变量时，页面不会加载任何统计脚本，也不会发送任何外部请求。你在自己的部署上想查看流量时，设置对应环境变量即可，无需修改代码或重新构建镜像——镜像启动时会据此生成运行期配置。

统计按「每家一个独立变量」配置：**填了谁就启用谁，可同时启用多家**（例如 GA4 + 百度一起开）。仅支持 GA4 与百度，两者都只接受 ID，脚本地址由代码固定拼接，不接受任意脚本地址或内联 JS。

| 变量 | 说明 |
| --- | --- |
| `ANALYTICS_GA4_ID` | Google Analytics 4 衡量 ID（`G-XXXX`） |
| `ANALYTICS_BAIDU_ID` | 百度统计站点 ID（`hm.js?` 后面那串 hash） |

在 `docker-compose.yml` 的 `environment` 中配置（文件内已附注释示例），下例同时启用 GA4 与百度：

```yaml
services:
  app:
    image: ghcr.io/basketikun/infinite-canvas:latest
    ports:
      - "3000:3000"
    environment:
      ANALYTICS_GA4_ID: G-XXXXXXXXXX
      ANALYTICS_BAIDU_ID: e8263761cc5c32f5f7a855b8203b965a
```

或使用 `docker run`：

```bash
docker run -d -p 3000:3000 \
  -e ANALYTICS_GA4_ID=G-XXXXXXXXXX \
  -e ANALYTICS_BAIDU_ID=e8263761cc5c32f5f7a855b8203b965a \
  ghcr.io/basketikun/infinite-canvas:latest
```

单页应用的路由切换会自动向所有已启用的统计上报 pageview。

<Callout type="warn">
请只在你自己的站点上配置统计 ID，不要把 ID 提交进仓库；fork 或自托管本项目的用户默认不会产生任何统计。
</Callout>
