Skip to content

Docker 部署 Nexus ​

本页部署的是 Nexus 产品,不是当前 VitePress 文档站。文档站镜像的构建和推送方式见本仓库根目录 README.md。

以下步骤使用产品工程中的 docker-compose.yml,只运行 Nexus 应用并连接外部 PostgreSQL。这是当前配置最完整、最适合生产环境的 Compose 方式。

前置条件 ​

  • 服务器已安装 Docker Engine 和 Docker Compose 插件。
  • PostgreSQL 已创建数据库和专用账号,且允许应用服务器访问。
  • 已取得 Nexus 产品源码。
  • 域名已经解析到服务器。

1. 准备环境变量 ​

在 Nexus 产品工程根目录执行:

bash
cp .env.example .env
openssl rand -hex 32

把生成的随机值填入 NUXT_AUTH_SECRET,并至少修改:

dotenv
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. 构建并启动 ​

bash
docker compose up -d --build

应用启动时会执行数据库迁移,并在数据库还没有管理员时创建 .env 指定的管理员。

3. 查看状态和日志 ​

bash
docker compose ps
docker compose logs --tail=200 app

日志中不应出现以下信息:

  • 启动失败:未配置 ...
  • 数据库连接拒绝或认证失败
  • 数据库迁移失败

4. 验证访问 ​

尚未配置 Nginx 时,可临时访问 http://服务器IP:3000。如果 .env 的 NUXT_APP_URL 已填写正式 HTTPS 域名,部分带 Origin 校验的功能应在域名和 HTTPS 配置完成后再测试。

Full 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停止并移除应用容器,不删除命名卷

生产环境还需要配置 HTTPS、备份和监控,继续阅读生产环境配置与运维与排障。