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

相关文章

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

全解析CSS Grid 的 auto-fill 和 auto-fit 内容自适应

《全解析CSSGrid的auto-fill和auto-fit内容自适应》:本文主要介绍了全解析CSSGrid的auto-fill和auto-fit内容自适应的相关资料,详细内容请阅读本文,希望能对你有所帮助... css  Grid 的 auto-fill 和 auto-fit/* 父元素 */.gri

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要