Github Action Auto build docker Auto deploy

简介

整个流程比较清晰,实现的是基于Github 定向的往ECS做发布

探索

自动化打包发布一般流程:

  1. 本地环境打镜像
    在这里插入图片描述
  2. CI/CD 环境打镜像
    在这里插入图片描述
    以上的流程使用于比较大的项目,受限于环境,打算对上面流程做简化,使用github action做触发

在这里插入图片描述

环境部署

一些准备

由于需要直接通过SSH 远程连接,需要准备一对公钥/密钥

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这将生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)

云服务器配置

安装Docker

首先,更新 YUM 软件包索引并安装一些必要的依赖项:

sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加 Docker 官方 GPG 密钥:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker Engine:

sudo yum install docker-ce docker-ce-cli containerd.io

启动 Docker 服务:

sudo systemctl start docker

(可选)设置 Docker 开机自启动:

sudo systemctl enable docker

现在,Docker 已经安装并且运行在 CentOS 上了。你可以使用 docker version 命令来验证安装是否成功。

创建部署用户和设置 SSH 认证

在服务器上创建一个专用的部署用户,根据需要设置用户的密码和其他选项。

sudo adduser deploy-user

切换到部署用户,并创建 .ssh 目录,然后将您的公钥(id_rsa.pub)添加到该用户的 authorized_keys 文件中:

sudo su - deploy-user
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
vi ~/.ssh/authorized_keys

重启 SSH 服务

sudo systemctl restart sshd

GitHub配置

  1. 基于下面流程,新加两个参数
    在这里插入图片描述
    在这里插入图片描述
  2. 新建Action事件,在push时触发事件
name: Build and Deploy Docker Imageon:push:branches:- mainjobs:build-and-deploy:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v2- name: Deploy to server and build Docker imageenv:SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}run: |mkdir -p ~/.sshecho "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsachmod 600 ~/.ssh/id_rsassh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa deploy-user@${{ secrets.IP }} "cd /path/to//project && docker build -t your-image-name:latest ."

这里会几个难点代处理:

  1. 没法使用Checkout code通过GitHub上的代码直接到云端构建image,暂时的想法 还是在github构建完之后上传到云端
  2. 云端新建用户的权限不足
  3. node 代码没有跑起来,是什么原因?

补充一些命令行

进入到docker image 中

docker run -it bot0 /bin/sh

正在运行的容器的 ID 或名称

docker ps

停止并删除容器

docker stop <container_id_or_name>
docker rm <container_id_or_name>

查找被停掉的容器

docker ps -a

删除相应的镜像

docker images
docker rmi <image_id_or_name>

删除所有未使用的镜像

docker image prune

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈和队列的学习

存储方式分两类&#xff1a;顺序存储和链式存储 栈&#xff1a;只允许从一端进行数据插入和删除的线性表&#xff1a;先进后出 FILO 队列&#xff1a;只允许从一端进行数据插入&#xff0c;另一端进行数据删除的线性表&#xff1a;先进先出 FIFO 栈 创建空栈&#xff0c;创建…

(AtCoder Beginner Contest 327) --- F-Apples --- 题解 (一个比较难想的线段树题)

目录 F-Apples&#xff1a; 题目大意&#xff1a; ​编辑​编辑 思路解析&#xff1a; 代码实现&#xff1a; F-Apples&#xff1a; 题目大意&#xff1a; 样例解释&#xff1a; 思路解析&#xff1a; 题目要求我们选择任意一对S&#xff0c;L&#xff0c;让苹果满足 S-0.…

北航悉尼大学联合研发突破性高效AI技术:双重二值化方法重塑大型语言模型效率

论文题目&#xff1a; DB-LLM: Accurate Dual-Binarization for Efficient LLMs 论文链接&#xff1a; https://arxiv.org/abs/2402.11960 大型语言模型&#xff08;LLMs&#xff09;的双重二值化方法&#xff1a;新纪元的高效自然语言处理。随着大型语言模型&#xff08;LLMs&…

Amazon SageMaker + Stable Diffusion 搭建文本生成图像模型

如果我们的计算机视觉系统要真正理解视觉世界&#xff0c;它们不仅必须能够识别图像&#xff0c;而且必须能够生成图像。文本到图像的 AI 模型仅根据简单的文字输入就可以生成图像。 近两年&#xff0c;以ChatGPT为代表的AIGC技术崭露头角&#xff0c;逐渐从学术研究的象牙塔迈…

应急救援装备无人机是否必要?无人机在应急救援中的具体应用案例有哪些?

无人机&#xff08;Drone&#xff09;是一种能够飞行并自主控制或远程操控的无人驾驶飞行器。它们通常由航空器、控制系统、通讯链路和电源系统组成&#xff0c;并可以根据任务需求搭载不同类型的传感器、摄像头、货物投放装置等设备。 无人机的种类繁多&#xff0c;从大小、形…

Android Handler使用介绍

Android 中的 Handler 是用来和线程通信的重要工具。它主要用于在后台线程中执行任务&#xff0c;并将结果传递回主线程以更新用户界面。 一、基本概念 线程间通信&#xff1a; Android 应用通常具有主线程&#xff08;也称为 UI 线程&#xff09;和后台线程。Handler 允许您从…

操作系统面经-程序和进程的区别

1.程序、进程、线程简述 程序的基本概念 程序是含有指令和数据的文件&#xff0c;被存储在磁盘或其他的数据存储设备中&#xff0c;也就是说程序是静态的代码。 进程的基本概念 在多道程序环境下&#xff0c;允许多个程序并发执行&#xff0c;此时它们将失去封闭性&#xf…

Verilog刷题笔记41

题目&#xff1a;Create 8 D flip-flops with active high asynchronous reset. All DFFs should be triggered by the positive edge of clk. 解题&#xff1a; module top_module (input clk,input areset, // active high asynchronous resetinput [7:0] d,output [7:0]…

哪些事是你当了领导才明白的?

哪些事是你当了领导才明白的&#xff1f; 毕业5年&#xff0c;17年开始带团队&#xff0c;确实很多事不做到管理这一层&#xff0c;就真的意识不到。 带着【执行者】和【管理者】这2个视角&#xff0c;再结合我毕业至今这5年的所有职场经历&#xff0c;聊聊“职场潜规则”。 …

docker swarm 集群创建

1&#xff0c;目的&#xff1a; 通过docker swarm 工具将一台或者多台安装了docker的服务器组成一个完整的集群&#xff0c;该集群中的node节点可以通过Leader节点管理。在使用docker stack部署时&#xff0c;可以将容器自动分发到合适的节点上。 2&#xff0c;服务器准备&am…

python统计分析——t分布、卡方分布、F分布

参考资料&#xff1a;python统计分析【托马斯】 一些常见的连续型分布和正态分布分布关系紧密。 t分布&#xff1a;正态分布的总体中&#xff0c;样本均值的分布。通常用于小样本数且真实的均值/标准差不知道的情况。 卡方分布&#xff1a;用于描述正态分布数据的变异程度。 F分…

R语言Meta分析核心技术:科研论文写作与数据可视化技巧

R语言作为一种强大的统计分析和绘图语言&#xff0c;在科研领域发挥着日益重要的作用。其中&#xff0c;Meta分析作为一种整合多个独立研究结果的统计方法&#xff0c;在R语言中得到了广泛的应用。通过R语言进行Meta分析&#xff0c;研究者能够更为准确、全面地评估某一研究问题…

ShardingSphere+JPA+Druid实现分表操作

要在SpringBoot项目中实现分表操作&#xff0c;本文使用的是ShardingSphereJPADruid实现。过程中出现问题记录一下。 准备MySQL数据库表 这里准备的是一张主表test_cost&#xff0c;两张从表test_cost_0和test_cost_1&#xff0c;结构需要相同&#xff0c;主表只是声明了表结构…

用大语言模型控制交通信号灯,有效缓解拥堵!

城市交通拥堵是一个全球性的问题&#xff0c;在众多缓解交通拥堵的策略中&#xff0c;提高路口交通信号控制的效率至关重要。传统的基于规则的交通信号控制&#xff08;TSC&#xff09;方法&#xff0c;由于其静态的、基于规则的算法&#xff0c;无法完全适应城市交通不断变化的…

Tensorflow2.0笔记 - 链式法则例子

本笔记简单记录链式法则的原理&#xff0c;关于链式法则&#xff0c;本身和高等数学中的链式求导法则是一样的&#xff0c;深度学习中相关资料可以参考这里&#xff1a; 【深度学习之美22】BP算法详解之链式法则 - 知乎10.5 什么是计算图&#xff1f;我们知道&#xff0c; 神经…

Windows环境下编译ffmpeg 6.1源码--Virtual Studio + Msys2方式

环境准备 约定&#xff1a;源码全部放到sources下&#xff0c;目录结构说明 /d/java/ffmpeg #工程工目录 ├── build #存放编译文件的目录&#xff0c;子目录为具体模块的构建目录 │ ├── fdk-aac │ ├── ffmpeg │ └── x264 ├── instal…

提升水库大坝安全与效率:现代技术云平台的应用

在我国&#xff0c;水库大坝的数量居世界之首&#xff0c;它们在推动国民经济发展中扮演着不可或缺的角色。然而&#xff0c;要想让这些水利工程充分发挥其价值&#xff0c;不仅需要精准的调度与高效的管理&#xff0c;更重要的是要确保其安全无虞。一旦发生事故&#xff0c;后…

鸿蒙Harmony应用开发—ArkTS-全局UI方法(列表选择弹窗)

列表弹窗。 说明&#xff1a; 从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块功能依赖UI的执行上下文&#xff0c;不可在UI上下文不明确的地方使用&#xff0c;参见UIContext说明。 从API version 10开始&#xff0…

数据结构——循环队列的实现

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

【回顾练习】静态路由配置综合实验报告

一、分析要求 为R6设备配置公有IP地址&#xff0c;并确保只能进行IP地址配置&#xff0c;无法进行其他配置。为R1-R5设备分配私有IP地址。为R1、R2、R4配置两个环回地址&#xff0c;为R5、R6配置一个环回地址。在R3上配置DHCP服务&#xff0c;以供两台PC自动获取IP地址。使用动…