第九篇:Docker 部署实战——从本地到服务器

举报
yd_220371319 发表于 2026/09/18 19:03:59 2026/09/18
【摘要】 前面已经把 Docker 的主要概念讲了一遍。现在把它们串起来。假设我们有一个 Web 项目。第一步:写 Dockerfile例如:FROM node:22-alpineWORKDIR /appCOPY package*.json ./RUN npm ci --omit=devCOPY . .EXPOSE 3000CMD ["node", "server.js"]构建:docker buil...


前面已经把 Docker 的主要概念讲了一遍。

现在把它们串起来。

假设我们有一个 Web 项目。

第一步:写 Dockerfile

例如:


FROM node:22-alpine

WORKDIR /app

COPY package*.json ./

RUN npm ci --omit=dev

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

构建:


docker build -t my-app:1.0 .

第二步:本地运行


docker run -d \
  --name my-app \
  -p 3000:3000 \
  my-app:1.0

测试:


localhost:3000

确认没问题之后,再考虑部署服务器。

第三步:推送镜像

完整流程通常是:


本地
 ↓
docker build
 ↓
Image
 ↓
Registry
 ↓
服务器
 ↓
docker pull
 ↓
Container

Registry 可以是:

  • Docker Hub
  • GitHub Container Registry
  • 私有 Registry
  • 云厂商镜像仓库

第四步:服务器启动

服务器上:


docker pull my-app:1.0

然后:


docker run -d \
  --name my-app \
  --restart unless-stopped \
  -p 3000:3000 \
  my-app:1.0

这里:


--restart unless-stopped

可以让容器在服务器重启等情况下按照策略自动恢复。

为什么还需要 Nginx?

实际生产环境通常不会直接:


用户 → :3000

更常见的是:


用户
 ↓
Nginx :443
 ↓
Docker Container :3000

Nginx 可以负责:

  • HTTPS
  • 域名
  • 反向代理
  • 静态资源
  • 请求转发

而应用容器只负责自己的业务。

日志怎么办?

最简单:


docker logs my-app

但生产环境还要考虑:


日志轮转
日志大小
集中式日志
日志保存周期

否则运行几个月之后,Docker 日志可能把磁盘吃满。

数据怎么办?

如果应用有数据库:


Container
   ↓
Volume
   ↓
Backup

千万不要认为:

“我用了 Docker,所以数据安全了。”

Docker 解决的是容器化,不是自动备份。

更新应用

最简单的方式:


docker pull my-app:1.1
docker stop my-app
docker rm my-app
docker run ...

更进一步,可以使用:


Docker Compose
+
CI/CD
+
自动部署

这样代码提交之后,就可以自动完成:


构建镜像
↓
推送镜像
↓
服务器拉取
↓
更新服务

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。