✓ npm run dev 正常
服务器 · 运行与保底
Docker 容器Docker Container
镜像把运行环境、依赖和代码一起打包成模具,容器是用它跑起来的实例,换机器行为不变。容器随时会删掉重建,数据要挂到 volume,密钥不打进镜像。
把「我电脑上能跑」原样搬到服务器
先像平时那样直接部署,看服务器为什么报错;再把环境打包成镜像、在服务器上启动容器。最后下几条订单、删掉容器重建,看数据有没有放对地方。
任务:网站在你电脑上 npm run dev 一切正常,现在要放到服务器上,并且以后升级、重建都不能丢订单。
第 1 段 · 让服务器跑出和你电脑一样的结果
还没有镜像
等待部署
网站:未部署
第 2 段 · 数据放在哪:删掉容器重建,订单还在吗?
先完成第 1 段,把容器跑起来。
验收:删容器重建后订单还在吗?
未测:先新增订单,再删除容器并重建。下一步:先点第 1 步,像平时那样把代码直接拷到服务器上跑,看服务器那边怎样。
知识点:模具、实例和放在外面的数据
面板上已经演过,这里只给命名。
- 「我电脑上能跑」的根因常是运行环境不同:Node 版本、系统库、依赖版本,见「运行时」「依赖」。
- 镜像是打包好的模具(环境 + 依赖 + 代码,构建后只读);容器是用镜像跑起来的实例,一个镜像能起很多个容器。
- 同一个镜像在你电脑和服务器上跑,用的都是镜像里的环境,和宿主机装了什么版本无关。
- 容器随时可以删掉重建,写在容器里的数据会跟着没;数据库数据和上传文件要挂到 volume。volume 也要备份,见「备份与快照」。
- 密钥不打进镜像:镜像会被推到仓库、拷到别的机器,密钥应在启动容器时用环境变量传入,见「环境变量」。
什么时候用、怎么用
自己管服务器、又被环境差异坑过时最值得用。
- 信号:本机能跑、服务器报版本或依赖错误;要在多台机器上跑同一个应用;AI 报告里出现 Dockerfile、docker compose、image、volume。
- 交代 AI:镜像里写死运行时版本;密钥用环境变量传入;数据库和上传目录挂 volume;用 docker compose 一条命令起停。
- 验收:在服务器上删掉容器再重建,确认订单、上传文件都还在,行为和本机一致;看镜像内容里没有 .env。
- 容器挂了谁来拉起:配置重启策略(restart: unless-stopped),作用和「进程守护」一样。
- 不适用:只有一台机器、托管平台已经帮你管环境时,不必为了时髦强上 Docker;版本出问题时的退路见「回滚」。
正反例:同一句「用 Docker 部署了」
目标都是让应用在服务器上稳定运行,差别只在数据放哪、密钥放哪。
升级到 myapp:1.1 时直接删旧容器、用新镜像重建,订单和上传的图片都在;镜像发给别人也不会泄露数据库密码。
第一次升级重建容器,三周的订单全没了;镜像被推到公开仓库,数据库密码跟着公开。
快速自测
AI 报告「已用 Docker 部署,升级方式是删掉旧容器、用新镜像重建」。你上线前最该先确认哪件事?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。