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

为了实现从测试服务器(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: Dockerfile
    volumes:
      - ~/.m2:/root/.m2 # 挂载 Maven 仓库(可选)
    ports:
      - "8080:8080" # 映射应用端口
    environment:
      - SPRING_PROFILES_ACTIVE=prod
    depends_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
  - deploy

build:
  stage: build
  script:
    - docker-compose build
    - docker tag your-app:latest your-docker-registry/your-app:latest
    - docker push your-docker-registry/your-app:latest
  only:
    - main

deploy:
  stage: deploy
  script:
    - 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),从而实现高效的开发和部署流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《信管通低代码信息管理系统开发平台》Windows环境安装说明

1 简介 《信管通低代码信息管理系统应用平台》提供多环境软件产品开发服务,包括单机、局域网和互联网。我们专注于适用国产硬件和操作系统应用软件开发应用。为事业单位和企业提供行业软件定制开发,满足其独特需求。无论是简单的应用还是复杂的系统&…

畅捷通-条件竞争

反编译dll 逻辑上很清晰了。取得上传数据然后直接写入Templates目录里去,且写入路径直接拼接文件名,说明写入路径可控。然后马上又调用Delete方法删除文件。看起来貌似很正常的样子,但实际上这里已经出现了严重的安全问题。首先是未限制上传…

重温设计模式--工厂模式(简单、工厂、抽象)

文章目录 工厂模式定义工厂模式通常可以细分为以下几种类型1、简单工厂模式(Simple Factory Pattern)2、工厂方法模式(Factory Method Pattern)3、抽象工厂模式(Abstract Factory Pattern) UML 图1、简单工厂模式UML2、…

华为手机鸿蒙4.2连接不上adb

1、下载HiSuite华为手机助手 https://consumer.huawei.com/cn/support/hisuite/ 2、安装后点连接 3、就可以adb连接了

重温设计模式--代理模式

文章目录 定义UML图代理模式主要有以下几种常见类型:代理模式涉及的主要角色有:C 代码示例 定义 代理模式(Proxy Pattern)属于结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。 通过引入代理对象&am…

JAVA开发入门学习七- 数组

数组的概念 概念 数组: 是多个相同类型数据按照一定排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理 数组中的概念 数组名: 数组的名称,命名 下标: 从0开始 元素:…

ECharts热力图-笛卡尔坐标系上的热力图,附视频讲解与代码下载

引言: 热力图(Heatmap)是一种数据可视化技术,它通过颜色的深浅变化来表示数据在不同区域的分布密集程度。在二维平面上,热力图将数据值映射为颜色,通常颜色越深表示数据值越大,颜色越浅表示数…

【解决问题】Java2DRenderer生成图片时中文乱码 Linux安装字体

一,问题 在使用Java2DRenderer框架将html生成图片时,html中的中文文本在图片上显示框框,即出现了中文乱码。在确认使用正确的字符编码utf-8之后,并且确认了修改成unicode也同样乱码的情况下,找到了真正的原因&#xf…

HTMLCSSJavaScriptDOM 之间的关系?

一、HTML 中文名:超文本标记语言 英文名:HyperText Markup Language HTML是一种用来结构化Web网页及其内容的标记语言。 HTML 由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 图Ⅰ 每…

Linux系统编程深度解析:C语言实战指南

文章一览 前言一、gcc编译系统1.1 文件名后缀1.2 C语言编译过程1.3 gcc命令行选项 二、gdb程序调试工具2.1 启动gdb和查看内部命令2.2 显示源程序和数据2.2.1 显示和搜索源程序2.2.2 查看运行时数据 2.3 改变和显示目录或路径2.4 控制程序的执行2.4.1 设置断点2.4.2 显示断点2.…

使用QML实现播放器进度条效果

使用QML实现播放进度效果 QML Slider介绍 直接上DEMO如下: Slider {width: 300;height: 20;orientation: Qt.Vertical; //决定slider是横还是竖 默认是HorizontalstepSize: 0.1;value: 0.2;tickmarksEnabled: true; //显示刻度}效果图如下 那么我先改变滑块跟滚轮…

云数智融合体系建设实践——以工行软件开发中心为例

随着“云计算第三次浪潮”的涌动,业界正见证着一场围绕“算力”的结构性变革。云计算、大数据、人工智能三大核心技术的深度融合,正推动着算力基础设施的快速发展,实现算力的高效调度与利用,也标志着业界对云计算体系布局的全新理…

评估大语言模型在药物基因组学问答任务中的表现:PGxQA

​这篇文献主要介绍了一个名为PGxQA的资源,用于评估大语言模型(LLM)在药物基因组学问答任务中的表现。 研究背景 药物基因组学(Pharmacogenomics, PGx)是精准医学中最有前景的领域之一,通过基因指导的治疗…

com.google.common.collect.ImmutableList$SerializedForm

今天AndroidStudio安装了个2021版本的,gradle用了7.3.3,创建项目后控制台总是有这样一个错误: Unable to load class com.google.common.collect.ImmutableList$SerializedForm. This is an unexpected error. Please file a bug containing…

[机器学习]sklearn入门指南(2)

上一篇文章中,我们介绍了如何用sklearn训练和预测模型,以及缺失值处理,详见[机器学习]sklearn入门指南(1) 分类变量 分类变量(Categorical Variable),也称为定性变量(Q…

CentOS下,离线安装vscode的步骤;

前置条件: 1.CentOS7; 步骤: 1.下载vscode指定版本,例如; 例如 code-1.83.1-1696982959.el7.x86_64.rpm 2.使用下面命令: sudo rpm -ivh code-1.83.1-1696982959.el7.x86_64.rpm 其他: 卸载vscode的命…

AI一键制作圣诞帽头像丨附详细教程

我用AI换上圣诞帽头像啦~🎅 不管是搞笑表情、宠物头像还是你的自拍!!都能一键添加圣诞帽元素,毫无违和感!🎉 详细教程在P3、P4,手残党也能轻松搞定! 宝子们需要打“need”&#xff0…

基于java博网即时通讯软件的设计与实现【源码+文档+部署讲解】

目 录 1. 绪 论 1.1. 开发背景 1.2. 开发意义 2. 系统设计相关技术 2.1 Java语言 2.2 MySQL数据库 2.3 Socket 3. 系统需求分析 3.1 可行性分析 3.2 需求分析 3.3 系统流程图 3.4 非功能性需求 4. 系统设计 4.1 系统功能结构 4.2 数据库设计 5. 系统实现 5.…

智能公文写作一体机,开箱即用快速部署超便捷

在繁忙的政企事业单位中,时间就是生产力。公文撰写作为各类组织日常工作的核心环节,却常常因为传统的公文处理流程繁琐耗时而成为效率的瓶颈。如何打破这一瓶颈,实现高效的公文撰写,成为了众多单位关注的焦点。 一款即开即用的公文…

idea2024创建JavaWeb项目以及配置Tomcat详解

今天呢,博主的学习进度也是步入了JavaWeb,目前正在逐步杨帆旗航,迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正…