logo
1
0
WeChat Login
更新 Docker 镜像地址为 docker.cnb.cool/rich/watermark-remover

Node.js 版本 Docker 部署指南

概述

本文档介绍如何使用 Docker 部署 Node.js 版本的去水印服务。该服务基于 Express 框架构建,支持多种 Docker 部署方式。

快速开始

1. 环境要求

  • Docker 20.0+
  • Docker Compose 2.0+
  • Node.js 18.0+ (本地开发)

2. 项目结构

nodejs/ ├── src/ # 应用源码 │ ├── server.js # 主服务器文件 │ ├── routes/ # 路由处理 │ └── middleware/ # 中间件 ├── public/ # 静态文件 ├── Dockerfile # 标准 Docker 配置 ├── Dockerfile.minimal # 最小化镜像配置 ├── Dockerfile.slim # 精简镜像配置 ├── docker-compose.yml # Docker Compose 配置 ├── nginx.conf # Nginx 反向代理配置 └── package.json # 项目依赖

镜像仓库

项目镜像托管在私有 Docker 仓库:docker.cnb.cool/rich/watermark-remover

可用标签:

  • latest: 标准镜像 (推荐生产环境)
  • minimal: 最小化镜像 (更小体积)
  • slim: 精简镜像 (平衡体积和功能)

部署方式

方式一:Docker Compose (推荐)

基础部署

# 1. 进入 nodejs 目录 cd nodejs # 2. 启动服务 docker-compose up -d # 3. 查看服务状态 docker-compose ps # 4. 查看日志 docker-compose logs -f

带 Nginx 反向代理部署

# 启动包含 Nginx 的完整服务 docker-compose --profile with-nginx up -d

服务访问地址:

停止服务

# 停止服务 docker-compose down # 停止并删除数据卷 docker-compose down -v

方式二:Docker 命令

构建镜像

# 标准镜像 (推荐生产环境) docker build -t docker.cnb.cool/rich/watermark-remover:latest . # 最小化镜像 (更小体积) docker build -f Dockerfile.minimal -t docker.cnb.cool/rich/watermark-remover:minimal . # 精简镜像 (平衡体积和功能) docker build -f Dockerfile.slim -t docker.cnb.cool/rich/watermark-remover:slim .

运行容器

# 基础运行 docker run -d \ --name watermark-remover \ -p 3000:3000 \ docker.cnb.cool/rich/watermark-remover:latest # 带环境变量运行 docker run -d \ --name watermark-remover \ -p 3000:3000 \ -e NODE_ENV=production \ -e PORT=3000 \ docker.cnb.cool/rich/watermark-remover:latest # 带健康检查运行 docker run -d \ --name watermark-remover \ -p 3000:3000 \ --health-cmd="node -e \"require('http').get('http://localhost:3000/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) })\"" \ --health-interval=30s \ --health-timeout=10s \ --health-retries=3 \ docker.cnb.cool/rich/watermark-remover:latest

方式三:从镜像仓库拉取

# 拉取最新镜像 docker pull docker.cnb.cool/rich/watermark-remover:latest # 拉取最小化镜像 docker pull docker.cnb.cool/rich/watermark-remover:minimal # 拉取精简镜像 docker pull docker.cnb.cool/rich/watermark-remover:slim # 运行拉取的镜像 docker run -d \ --name watermark-remover \ -p 3000:3000 \ docker.cnb.cool/rich/watermark-remover:latest

方式四:npm 脚本 (本地构建)

# 构建镜像 npm run docker:build # 运行容器 npm run docker:run

配置说明

环境变量

变量名默认值说明
NODE_ENVproduction运行环境
PORT3000服务端口

端口配置

  • 3000: 应用服务端口
  • 80: Nginx 反向代理端口 (可选)

健康检查

所有 Docker 配置都包含健康检查:

  • 检查间隔:30秒
  • 超时时间:10秒
  • 重试次数:3次
  • 启动等待:40秒

镜像对比

镜像类型基础镜像特点适用场景
Dockerfilenode:18-alpine多阶段构建,安全性高生产环境推荐
Dockerfile.minimalnode:18-alpine最小化依赖,体积最小资源受限环境
Dockerfile.slimnode:18-slim平衡体积和功能一般生产环境

API 接口

健康检查

GET /health

去水印服务

POST /api/watermark/remove Content-Type: multipart/form-data 参数: - image: 图片文件 (支持 JPEG, PNG, WebP)

测试页面

GET /

监控和日志

查看容器状态

# Docker Compose docker-compose ps docker-compose logs -f watermark-remover # Docker 命令 docker ps docker logs -f watermark-remover

健康检查状态

# 查看健康状态 docker inspect watermark-remover | grep -A 10 Health # 实时监控 watch 'docker inspect watermark-remover | grep -A 10 Health'

故障排除

常见问题

  1. 端口占用

    # 检查端口占用 lsof -i :3000 # 修改端口 docker run -p 3001:3000 watermark-remover-nodejs
  2. 内存不足

    # 限制内存使用 docker run --memory=512m docker.cnb.cool/rich/watermark-remover:latest
  3. 权限问题

    # 检查文件权限 ls -la nodejs/src/ # 修复权限 chmod +x nodejs/src/server.js

调试模式

# 开发模式运行 docker run -it \ -p 3000:3000 \ -v $(pwd)/nodejs/src:/app/src \ -e NODE_ENV=development \ docker.cnb.cool/rich/watermark-remover:latest npm run dev

性能优化

生产环境建议

  1. 使用多阶段构建 (Dockerfile)
  2. 启用压缩中间件 (已配置)
  3. 配置 Nginx 反向代理 (可选)
  4. 设置适当的资源限制
# 生产环境运行示例 docker run -d \ --name watermark-remover-prod \ -p 3000:3000 \ --memory=1g \ --cpus=1.0 \ --restart=unless-stopped \ -e NODE_ENV=production \ docker.cnb.cool/rich/watermark-remover:latest

更新和维护

更新服务

# 1. 停止现有服务 docker-compose down # 2. 拉取最新代码 git pull # 3. 重新构建镜像 docker-compose build # 4. 启动服务 docker-compose up -d

备份和恢复

# 导出镜像 docker save docker.cnb.cool/rich/watermark-remover:latest > watermark-remover-backup.tar # 导入镜像 docker load < watermark-remover-backup.tar

安全注意事项

  1. 非 root 用户运行 (已配置)
  2. 最小化镜像体积 (可选择 minimal 版本)
  3. 安全头部设置 (Helmet 中间件)
  4. CORS 配置 (生产环境需要限制域名)

支持

如有问题,请查看: