Github Action Auto build docker Auto deploy

2024-03-22 07:20

本文主要是介绍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

这篇关于Github Action Auto build docker Auto deploy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834813

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体