当前位置: 首页 > news >正文

从测试服务器手动热部署到生产环境的实现

为了实现从测试服务器(192.168.0.255)手动热部署到生产环境(172.168.20.100),可以采用多种方法。以下是详细的步骤和最佳实践,帮助你实现这一目标。

1. 准备生产环境

确保生产环境上的 Docker 和 Docker Compose 已正确安装并配置。

  1. 安装 Docker

    bash

sudo apt-get update
sudo apt-get install docker.io

2.安装 Docker Compose

bash
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')" /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

3、启动并启用 Docker 服务

bash

sudo systemctl start docker
sudo systemctl enable docker

2. 配置生产环境的 Dockerfile 和 docker-compose.yml

确保生产环境的 Dockerfile 和 docker-compose.yml 文件与测试环境一致,但禁用热部署功能。

Dockerfile 示例

dockerfile

FROM openjdk:17-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "/app.jar"]

docker-compose.yml 示例

yaml

version: '3'
services:app:build:context: .dockerfile: Dockerfilevolumes:- ~/.m2:/root/.m2 # 挂载 Maven 仓库(可选)ports:- "8080:8080" # 映射应用端口environment:- SPRING_PROFILES_ACTIVE=proddepends_on:- db # 如果有依赖数据库等其他服务

3. 在测试服务器上构建 Docker 镜像

在测试服务器上构建 Docker 镜像,并将其推送到私有镜像仓库(如 Docker Hub、Harbor 等),或者直接通过 SSH 将镜像传输到生产服务器。

构建 Docker 镜像

bash

docker-compose build

标记镜像

bash

docker tag your-app:latest your-docker-registry/your-app:latest

推送镜像到私有仓库

bash

docker push your-docker-registry/your-app:latest

4. 从测试服务器传输镜像到生产服务器

如果选择不使用私有镜像仓库,可以直接通过 SSH 将镜像传输到生产服务器。

  1. 保存镜像为 tar 文件

    bash

docker save -o your-app.tar your-app:latest

    2.通过 SSH 传输 tar 文件到生产服务器

   bash

scp your-app.tar user@172.168.20.100:/path/to/remote

   3.在生产服务器上加载镜像

bash

docker load -i /path/to/remote/your-app.tar

5. 在生产服务器上部署 Docker 容器

在生产服务器上使用 docker-compose 部署容器。

  1. 修改 docker-compose.yml 文件(如果需要):

    确保 docker-compose.yml 文件中的配置适用于生产环境。

  2. 启动 Docker 容器

    bash

docker-compose up -d

6. 手动热部署流程

为了实现手动热部署,可以编写一个脚本来简化流程。

手动热部署脚本示例

  1. 在测试服务器上构建并传输镜像

    bash

#!/bin/bash# 构建 Docker 镜像
docker-compose build# 标记镜像
docker tag your-app:latest your-docker-registry/your-app:latest# 推送镜像到私有仓库
docker push your-docker-registry/your-app:latest# 或者保存镜像为 tar 文件并通过 SSH 传输
# docker save -o your-app.tar your-app:latest
# scp your-app.tar user@172.168.20.100:/path/to/remote

2.在生产服务器上拉取并部署镜像

bash

#!/bin/bash# 拉取镜像
docker pull your-docker-registry/your-app:latest# 或者加载 tar 文件
# docker load -i /path/to/remote/your-app.tar# 停止并移除现有容器
docker-compose down# 启动新容器
docker-compose up -d

7. 使用 Git 和 CI/CD 流水线(可选)

为了更加自动化地管理代码部署,可以设置 Git 和 CI/CD 流水线。

  1. 初始化 Git 仓库

    • 在本地项目目录中初始化 Git 仓库。
    • 将代码推送到远程 Git 仓库(如 GitHub、GitLab 等)。
  2. 配置 CI/CD 流水线

    示例 GitLab CI 配置 (gitlab-ci.yml)

    yaml

    • 使用 Jenkins、GitLab CI、GitHub Actions 等工具配置流水线。
    • 设置流水线任务,在每次推送代码时自动构建镜像并部署到生产环境。
stages:- build- deploybuild:stage: buildscript:- docker-compose build- docker tag your-app:latest your-docker-registry/your-app:latest- docker push your-docker-registry/your-app:latestonly:- maindeploy:stage: deployscript:- ssh user@172.168.20.100 "cd /path/to/remote/project && docker pull your-docker-registry/your-app:latest && docker-compose down && docker-compose up -d"only:- main

8. 注意事项

  • 安全性:确保生产环境的安全性,使用防火墙、SSH 密钥等手段保护服务器。
  • 备份:在部署新版本之前,确保对现有数据进行备份。
  • 日志监控:建议使用日志工具(如 ELK Stack)来监控容器内的日志输出,以便快速排查问题。
  • 性能测试:在生产环境中部署新版本之前,进行充分的性能测试,确保不会对现有服务造成影响。

通过以上步骤,你应该能够在测试服务器(192.168.0.255)上手动热部署到生产环境(172.168.20.100),从而实现高效的开发和部署流程。

http://www.lryc.cn/news/509088.html

相关文章:

  • 【c++高阶DS】图
  • React第十八节 useEffect 用法使用技巧注意事项详解
  • C++ 指针基础:开启内存操控之门
  • Nginx的stream模块代理四层协议TCP的流量转发
  • UE5 渲染管线 学习笔记
  • Echarts连接数据库,实时绘制图表详解
  • Electron 学习笔记
  • Debian 12 安装配置 fail2ban 保护 SSH 访问
  • http反向代理
  • java12.24日记
  • vue中proxy代理配置(测试一)
  • [OpenGL]使用TransformFeedback实现粒子效果
  • GitCode 光引计划投稿 | GoIoT:开源分布式物联网开发平台
  • 用 gdbserver 调试 arm-linux 上的 AWTK 应用程序
  • 攻防世界web第一题
  • 轮播图带详情插件,插件
  • gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接
  • ISO17025最新认证消息
  • ASP.NET Core Web API 控制器
  • RAID5原理简介和相关问题
  • Axure RP 8安装(内带安装包)
  • stm32定时器输出比较----驱动步进电机
  • 关于鸿蒙架构feature
  • 【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(一)
  • vue3 如何使用 mounted
  • PostgreSQL JOIN
  • mysql(基础语法)
  • 【论文阅读笔记】Scalable, Detailed and Mask-Free Universal Photometric Stereo
  • 抓取手机HCI日志
  • 【linux】 unshare -user -r /bin/bash命令详解