Docker 部署 Nexus
本页部署的是 Nexus 产品,不是当前 VitePress 文档站。文档站镜像的构建和推送方式见本仓库根目录
README.md。
以下步骤使用产品工程中的 docker-compose.yml,只运行 Nexus 应用并连接外部 PostgreSQL。这是当前配置最完整、最适合生产环境的 Compose 方式。
前置条件
- 服务器已安装 Docker Engine 和 Docker Compose 插件。
- PostgreSQL 已创建数据库和专用账号,且允许应用服务器访问。
- 已取得 Nexus 产品源码。
- 域名已经解析到服务器。
1. 准备环境变量
在 Nexus 产品工程根目录执行:
cp .env.example .env
openssl rand -hex 32把生成的随机值填入 NUXT_AUTH_SECRET,并至少修改:
NUXT_DATABASE_URL=postgresql://nexus_user:数据库密码@数据库地址:5432/nexus
NUXT_AUTH_SECRET=上一步生成的随机值
NUXT_APP_URL=https://你的域名
NUXT_ADMIN_EMAIL=admin@你的域名
NUXT_ADMIN_PASSWORD=高强度管理员密码
NUXT_ADMIN_NAME=System Admin
NUXT_UPLOAD_DIR=/data/uploads容器内的 localhost 指容器自身。数据库在服务器宿主机时使用 host.docker.internal,Linux 环境还需要在 Compose 中配置 extra_hosts: ["host.docker.internal:host-gateway"];生产更推荐使用容器可达的独立数据库地址。
2. 构建并启动
docker compose up -d --build应用启动时会执行数据库迁移,并在数据库还没有管理员时创建 .env 指定的管理员。
3. 查看状态和日志
docker compose ps
docker compose logs --tail=200 app截取 docker compose ps 和启动日志中的成功状态,遮盖服务器地址及其他敏感信息。
/images/deployment/compose-running.png日志中不应出现以下信息:
启动失败:未配置 ...- 数据库连接拒绝或认证失败
- 数据库迁移失败
4. 验证访问
尚未配置 Nginx 时,可临时访问 http://服务器IP:3000。如果 .env 的 NUXT_APP_URL 已填写正式 HTTPS 域名,部分带 Origin 校验的功能应在域名和 HTTPS 配置完成后再测试。
截取 HTTPS 域名下的 Nexus 首页,并保留浏览器地址栏中的有效域名和安全连接状态。
/images/deployment/production-homepage.pngFull Compose 当前限制
产品工程的 docker-compose-full.yml 可以同时声明 PostgreSQL 和应用,但当前版本:
- 没有
env_file: .env。 - 使用已经废弃的
NUXT_SESSION_SECRET,而应用实际要求NUXT_AUTH_SECRET。 - 没有传入自定义管理员、站点 URL 和其他业务配置。
在编排文件完成对齐并通过启动测试前,不要把 npm run docker:up:full 作为生产部署方式,也不要依赖它验证 .env 中的管理员账号。
常用运维命令
| 命令 | 作用 |
|---|---|
docker compose up -d --build | 构建并启动或升级应用 |
docker compose ps | 查看容器状态 |
docker compose logs -f app | 持续查看应用日志 |
docker compose restart app | 重启应用 |
docker compose down | 停止并移除应用容器,不删除命名卷 |

