You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署的React网站等服务的规范修改及存储问题咨询

问题解答

一、规范的服务更新流程

别再用nano直接改服务器代码了,这完全是野路子,给你一套从本地开发到EC2部署的标准流程:

  • 本地代码管理与提交
    1. 本地修改代码后,把改动加到Git暂存区:git add .
    2. 提交改动并写清楚修改内容:git commit -m "修复React页面弹窗bug/更新Node接口逻辑"
    3. 把代码推送到远程Git仓库:git push origin main(main是默认分支,也可能是master)
  • EC2拉取代码并更新Docker镜像
    1. 登录EC2服务器,进入项目根目录:cd /path/to/your/project
    2. 拉取最新代码:git pull origin main
    3. 重新构建Docker镜像:
      • 单服务用Dockerfile:docker build -t your-node-service:v2 .(给镜像加版本号,比如v2,避免和旧版本混淆)
      • docker-compose管理多服务:docker-compose build react-service node-service(指定要更新的服务名,不用全量构建)
  • 重启容器并生效
    1. 原生Docker命令:先停旧容器docker stop your-node-container,删旧容器docker rm your-node-container,再用新镜像启动docker run -d --name your-node-container -p 3000:3000 your-node-service:v2
    2. docker-compose更省心:docker-compose up -d react-service node-service,自动替换旧容器并后台运行

    重点提醒:MongoDB容器一定要挂载数据卷(volume),不然更新容器会丢失数据库数据,比如docker-compose里配置volumes: - mongodb-data:/data/db

二、EC2存储耗尽的解决办法

你每次删镜像重生成的操作确实会留下很多垃圾,Docker不会自动清理这些无用资源,按下面步骤解决:

  • 排查存储占用情况
    执行docker system df,能看到镜像、容器、卷、缓存各自的空间占用,一目了然。
  • 一键清理无用资源
    执行docker system prune -a,这个命令会删除所有未运行的容器、未被容器引用的镜像、未使用的网络、构建缓存。执行时会弹出确认,输入y即可;不想手动确认就加-f参数:docker system prune -af
  • 针对性清理(可选)
    • 只删未使用的镜像:docker image prune -a
    • 只删停止的容器:docker container prune
    • 只删未被使用的卷:docker volume prune(注意:别删MongoDB在用的卷,先确认Mongo容器在运行)
  • 优化后续更新操作
    1. 给镜像加版本号,比如每次构建用v1、v2或日期标签,不用每次删旧镜像,定期清理即可
    2. 用docker-compose的话,直接执行docker-compose up -d --build,自动重新构建服务并替换旧容器,不用手动删镜像容器
    3. 给EC2加定时任务,比如每天凌晨自动执行docker system prune -af,省去手动清理的麻烦

内容的提问来源于stack exchange,提问作者Peter Buonaiuto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:37:34