云计算百科
云计算领域专业知识百科平台

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

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

1. 准备生产环境

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

  • 安装 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 将镜像传输到生产服务器。

  • 保存镜像为 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 部署容器。

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

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

  • 启动 Docker 容器:

    bash

  • docker-compose up -d

    6. 手动热部署流程

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

    手动热部署脚本示例:

  • 在测试服务器上构建并传输镜像:

    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 流水线。

  • 初始化 Git 仓库:

    • 在本地项目目录中初始化 Git 仓库。
    • 将代码推送到远程 Git 仓库(如 GitHub、GitLab 等)。
  • 配置 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),从而实现高效的开发和部署流程。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 从测试服务器手动热部署到生产环境的实现
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!