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;从大小、形…

信号量实现生产者消费者程序_C语言示例

信号量的基本思想是通过一个计数器和一组相关的操作来实现资源的控制和同步。计数器表示可用的资源数量&#xff0c;每次访问共享资源时&#xff0c;线程需要先申请信号量&#xff0c;如果信号量的计数器大于零&#xff0c;则线程可以访问共享资源并将计数器减一&#xff1b;如…

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]…

ollama -linux部署

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 安装对应的包启动ollama启动llama2大模型&#xff08;新开一个终端&#xff09;python接口对话streamlit对话 安装对应的包 # linux 安装curl -fsSL https://ollam…

开发chrome扩展( 禁止指定域名使用插件)

mainfest.json: {"manifest_version": 3,"name": "ChatGPT学习","version": "0.0.2","description": "ChatGPT,GPT-4,Claude3,Midjourney,Stable Diffusion,AI,人工智能,AI","icons": {&quo…

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

哪些事是你当了领导才明白的&#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;主表只是声明了表结构…

嵌入式学习-ARM

嵌入式学习-ARM STM32串口控制三盏灯亮灭 MAIN.C #include "uart4.h" int main() {uart4_init();gpio_init();char str[32];while (1){gets(str);if (my_strcmp(str,"A") 0){led1();}else if (my_strcmp(str,"B") 0){led2();}else if (my_s…

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

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

Tabulator-tables5.6版本升级6.0版本

npm install tabulator-table 报错内容 /node_modules/tabulator-tables/dist/js/tabulator_esm.js 658:19 Module parse failed: Unexpected token (658:19) You may need an appropriate loader to handle this file type, currently no loaders are configured to process…

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

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