前端发布-docker

服务发布文档 - Docker部署流程


目录

  1. 需求背景
  2. 发布流程概览
  3. 详细操作步骤及命令解析
  4. 后续维护操作

一、需求背景
本次服务发布通过Docker容器化部署方式,完成前端服务(HVAC Optimization Frontend)的版本更新,主要目标为:
• 部署新版本前端服务(tag_*

• 确保服务高可用性(--restart=unless-stopped

• 绑定静态配置文件(global.js)实现动态配置管理


二、发布流程概览

  1. 拉取镜像 → 2. 保存镜像备份 → 3. 加载镜像到目标环境 → 4. 启动容器服务 → 5. 验证与维护

三、详细操作步骤及命令解析

  1. 拉取镜像
docker pull <REGISTRY_URL>/<NAMESPACE>/<IMAGE_NAME>:<TAG>

• 作用:从私有镜像仓库拉取指定版本的镜像。


  1. 保存镜像备份
docker save <REGISTRY_URL>/<NAMESPACE>/<IMAGE_NAME>:<TAG> | gzip > /tmp/<BACKUP_FILE>.tar.gz

• 作用:将镜像打包为压缩文件,用于备份或迁移。

• 参数解析:

docker save:导出镜像为.tar文件

gzip:压缩导出的文件以节省空间

> /tmp/...:输出到指定路径

chown -R <USERNAME>:<GROUP> /tmp/<BACKUP_FILE>.tar.gz

• 作用:修改文件所有者,确保目标环境有权限访问备份文件。

• 参数解析:

supper-user:supper-user:目标用户和用户组

/tmp/...:备份文件路径


  1. 加载镜像到目标环境
docker load -i <BACKUP_FILE>.tar.gz

• 作用:将备份的镜像加载到本地Docker环境。

• 参数解析:

-i:指定输入文件(.tar.gz压缩包)


  1. 启动容器服务
docker run -d --restart=unless-stopped -p <HOST_PORT>:<CONTAINER_PORT> --mount type=bind,source=<HOST_CONFIG_PATH>,target=<CONTAINER_CONFIG_PATH> <IMAGE_NAME>:<TAG>

• 作用:以守护进程模式启动容器,并绑定配置文件和端口。

• 参数解析:

-d:后台运行容器(Detached Mode)

--restart=unless-stopped:自动重启策略(除非手动停止)

-p <HOST_PORT>:<CONTAINER_PORT>:端口映射(主机端口:容器端口)

--mount type=bind,...:绑定宿主机文件到容器路径

◦ `source`:宿主机配置文件路径

◦ `target`:容器内目标路径

  1. 验证服务状态
 
docker ps

• 作用:查看当前运行的容器进程,确认服务已启动。

• 输出字段:

CONTAINER ID:容器唯一标识

IMAGE:使用的镜像

STATUS:运行状态(Up表示正常)


四、后续维护操作

  1. 查看镜像列表
 
docker images

• 作用:列出本地所有Docker镜像,确认镜像已加载。


  1. 查看容器日志
 
docker logs -f <CONTAINER_ID>

• 作用:实时跟踪容器日志(-f表示Follow模式)。

• 典型场景:调试服务启动问题或监控运行状态。


  1. 进入容器终端
 
docker exec -it <CONTAINER_ID> /bin/bash

• 作用:进入容器内部执行命令(如修改配置或调试)。

• 参数解析:

-it:交互式终端(Interactive + TTY)


  1. 重启服务
 
docker restart <CONTAINER_ID>

• 作用:重启指定容器(适用于配置更新后生效)。


五、注意事项

  1. 权限问题:确保supper-user对备份文件有读写权限。
  2. 端口冲突:检查8014端口是否已被占用。
  3. 配置文件更新:修改/root/fe/wind/global.js后需重启容器生效。
  4. 镜像版本:注意镜像标签与文件名的一致性(如2025042820250430)。

附录:Docker命令汇总表

以下为本次服务发布过程中用到的所有命令及其详细说明:

命令 用途 参数说明
docker pull <REGISTRY_URL>/<NAMESPACE>/<IMAGE_NAME>:<TAG> 从私有仓库拉取镜像 - <REGISTRY_URL>: 私有仓库地址
- <NAMESPACE>: 镜像名称及路径
- <TAG>: 镜像版本标签
docker save <IMAGE_NAME> | gzip > /tmp/tag_...tar.gz 导出镜像为压缩文件(备份) - <IMAGE_NAME>: 完整镜像名称(需与pull命令一致)
| gzip: 通过管道压缩文件
> /tmp/...: 输出到指定路径
chown -R supper-user:supper-user /tmp/tag_...tar.gz 修改备份文件权限(系统命令) - -R: 递归修改目录权限
- supper-user:supper-user: 目标用户及用户组
docker ps 查看正在运行的容器进程 - 无参数:默认显示当前运行容器
- 常用组合参数:
-a: 显示所有容器(包括已停止的)
docker load -i <BACKUP_FILE>.tar.gz 从压缩文件加载镜像到本地环境 - -i: 指定输入文件路径
docker run -d --restart=unless-stopped -p <HOST_PORT>:<CONTAINER_PORT> --mount type=bind,source=<HOST_CONFIG_PATH>,target=<CONTAINER_CONFIG_PATH> <IMAGE_NAME>:<TAG> 启动容器并绑定端口、配置 - -d: 后台运行
- --restart=unless-stopped: 自动重启策略
- -p 8014:8080: 端口映射(主机:容器)
- --mount type=bind: 挂载宿主机文件到容器
- source: 宿主机文件路径
- target: 容器内目标路径
<IMAGE_NAME>: 启动的镜像名称及标签
docker images 列出本地所有镜像 - 常用参数:
-q: 仅显示镜像ID
docker logs -f <CONTAINER_ID> 实时查看容器日志 - -f: 持续跟踪日志输出
<CONTAINER_ID>: 容器ID或名称
docker exec -it <CONTAINER_ID> /bin/bash 进入容器终端 - -it: 启用交互式终端
/bin/bash: 指定容器内Shell类型
docker restart <CONTAINER_ID> 重启容器 - <CONTAINER_ID>: 容器ID或名称

​注意事项​

  1. 变量替换:

    通用标识符说明​

    ​占位符​ ​实际值示例​
    <REGISTRY_URL> 私有镜像仓库地址(如 harbor.example.com
    <NAMESPACE> 项目命名空间(如 project-team
    <IMAGE_NAME> 镜像名称(如 service-frontend
    <TAG> 镜像版本标签(如 v1.2.0 或 prod-20240501
    <BACKUP_FILE> 备份文件名(如 service-frontend-backup
    <USERNAME>:<GROUP> 系统用户及用户组(如 deploy-user:deploy-admin
    <HOST_PORT> 宿主机映射端口(如 8080
    <CONTAINER_PORT> 容器内服务端口(如 80
    <HOST_CONFIG_PATH> 宿主机配置文件路径(如 /data/configs/app-settings.json
    <CONTAINER_CONFIG_PATH> 容器内配置文件路径(如 /app/config/settings.json
  2. 权限问题:
    • 若使用非root用户操作,需在命令前添加sudo

  3. 路径一致性:
    • 确保--mountsource路径在宿主机上真实存在。

  4. 日志调试:
    • 若服务启动失败,优先通过docker logs -f检查报错信息。

posted @ 2025-05-07 19:42  Yang9710  阅读(21)  评论(0)    收藏  举报