本文档介绍如何使用 Docker 部署 Node.js 版本的去水印服务。该服务基于 Express 框架构建,支持多种 Docker 部署方式。
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: 精简镜像 (平衡体积和功能)# 1. 进入 nodejs 目录
cd nodejs
# 2. 启动服务
docker-compose up -d
# 3. 查看服务状态
docker-compose ps
# 4. 查看日志
docker-compose logs -f
# 启动包含 Nginx 的完整服务
docker-compose --profile with-nginx up -d
服务访问地址:
# 停止服务
docker-compose down
# 停止并删除数据卷
docker-compose down -v
# 标准镜像 (推荐生产环境)
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 run docker:build
# 运行容器
npm run docker:run
| 变量名 | 默认值 | 说明 |
|---|---|---|
NODE_ENV | production | 运行环境 |
PORT | 3000 | 服务端口 |
所有 Docker 配置都包含健康检查:
| 镜像类型 | 基础镜像 | 特点 | 适用场景 |
|---|---|---|---|
| Dockerfile | node:18-alpine | 多阶段构建,安全性高 | 生产环境推荐 |
| Dockerfile.minimal | node:18-alpine | 最小化依赖,体积最小 | 资源受限环境 |
| Dockerfile.slim | node:18-slim | 平衡体积和功能 | 一般生产环境 |
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'
端口占用
# 检查端口占用
lsof -i :3000
# 修改端口
docker run -p 3001:3000 watermark-remover-nodejs
内存不足
# 限制内存使用
docker run --memory=512m docker.cnb.cool/rich/watermark-remover:latest
权限问题
# 检查文件权限
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
# 生产环境运行示例
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
如有问题,请查看: