Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >提升你的CI/CD流水线:使用GitHub Actions自动化 Docker

提升你的CI/CD流水线:使用GitHub Actions自动化 Docker

作者头像
云云众生s
发布于 2025-03-05 01:10:16
发布于 2025-03-05 01:10:16
33512
代码可运行
举报
文章被收录于专栏:云云众生s云云众生s
运行总次数:2
代码可运行

译自:Boost Your CI/CD Pipeline: Automate Docker With GitHub Actions 作者:Advait Patel

了解如何使用 GitHub Actions 自动化 Docker 工作流程,以实现更快的部署。

在本指南中,我们将深入探讨如何使用 GitHub Actions 自动化 Docker 工作流程,只需几个简单的步骤即可启动并运行。随着云原生开发的兴起和 CI/CD 流水线日益复杂,自动化是必不可少的。GitHub Actions 提供了一种无缝的方式来将 Docker 集成到你的工作流程中,从而减少手动工作并提高部署速度。

让我们开始吧!

如何为 Docker 设置 GitHub Actions

让我们直接进入设置 GitHub Actions。你需要做的第一件事是创建一个工作流程文件。它是一个简单的 YAML 文件,位于你的 repo 的 .github/workflows/ 目录下。

步骤 1:创建工作流程文件

  1. 转到你的 repo。
  2. 创建一个名为 .github 的文件夹(如果它尚不存在)。
  3. 在其中创建一个名为 workflows 的文件夹。
  4. .github/workflows/ 中创建一个名为 docker.yml(或任何你喜欢的名称)的文件。

这是你的 docker.yml 文件的基本结构:

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
name: Docker Workflow
 
on:
  push:
    branches:
      - main
 
jobs:
  build:
    runs-on: ubuntu-latest
 
    steps:
      - name: Check out code
        uses: actions/checkout@v2
 
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
 
      - name: Build Docker Image
        run: docker build -t myapp:${{ github.sha }} .
      
      - name: Push Docker Image
        run: |
          echo ${{ secrets.DOCKER_PASSWORD }} | docker login --username ${{ secrets.DOCKER_USERNAME }} --password-stdin
          docker push myapp:${{ github.sha }}

上面的 YAML 文件会自动构建。此外,每当更改被移动到 main 分支时,它都会推送你的 Docker 镜像。

自托管与 GitHub 托管的 Runners

有两种选择可用于执行你的工作流程:

GitHub 托管的 runners 是默认选项。设置相对免维护,并且对你来说很方便。

使用自托管的 runners,用户可以完全控制工作流程执行机器。虽然此方法提供了更高的灵活性,但它需要持续维护。

对于大多数用户来说,GitHub 托管的 runners 将是首选解决方案。因为它们最适合 Docker 构建。

自动化 Docker 镜像构建

假设你已经推送了一些新代码。现在,你想自动化构建你的 Docker 镜像。你可以这样做。

步骤 2:自动构建 Docker 镜像

你将在 GitHub Actions 工作流程文件中使用 docker build 命令来自动构建你的 Docker 镜像。

例如,在你的 docker.yml 文件中:

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
- name: Build Docker image
  run: docker build -t myapp:${{ github.sha }} .

上述命令将创建一个 Docker 镜像,并使用 commit SHA (${{ github.sha }}) 对其进行标记。它确保每个镜像都使用 commit ID 唯一标记。

步骤 3:动态标记 Docker 镜像

你可能希望以有意义的方式标记你的镜像。例如,按分支名称,或者使用版本标签。你可以使用 GitHub Actions 变量来做到这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: Build and tag Docker image
  run: docker build -t myapp:${{ github.sha }} -t myapp:${{ github.ref }} .

在这个例子中:

  • ${{ github.sha }} 使用唯一的 commit 哈希标记镜像。
  • ${{ github.ref }} 使用分支名称(例如,refs/heads/main)标记它。 它可以使你的镜像易于跟踪和识别。

推送到 Docker Hub 或 GHCR

现在你已经构建了镜像,下一步是将其推送到容器注册表,例如 Docker Hub 或 GitHub Container Registry (GHCR)。

步骤 4:设置安全身份验证

首先,你需要验证 Docker 才能推送镜像。由于你不想直接在 YAML 文件中暴露你的凭据,因此 GitHub Secrets 是你的好帮手。

转到你的 GitHub repo 的 Settings > Secrets 并添加两个 secrets:

  • DOCKER_USERNAME
  • DOCKER_PASSWORD

然后,在你的工作流程文件中,你将使用这些 secrets 登录到你的 Docker:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: Log in to Docker Hub
  run: |
    echo ${{ secrets.DOCKER_PASSWORD }} | docker login --username ${{ secrets.DOCKER_USERNAME }} --password-stdin

步骤 5:将镜像推送到 Docker Hub 或 GHCR

最后,登录后,推送你的 Docker 镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: Push Docker image to Docker Hub
  run: docker push myapp:${{ github.sha }}

YAML 代码将你的镜像推送到 Docker Hub。此外,如果这是你的选择,你可以将其换成 GHCR。

使用 QEMU 和 Buildx 进行多架构构建

你现有的工作流程必须支持多种机器架构,例如 ARM 和 x86。它允许启动从 Raspberry Pi (基于 ARM) 设备到基于云的服务器 (基于 x86) 的硬件操作。在此阶段,QEMU+Buildx 在 GitHub Actions 内部的组合非常方便。

步骤 6:设置多架构构建

首先,你必须在你的工作流程文件中设置 QEMU 和 Buildx。

以下是它的样子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: Set up QEMU
  uses: docker/setup-qemu-action@v2
 
- name: Set up Buildx
  uses: docker/setup-buildx-action@v1
 
- name: Build multi-arch Docker image
  run: |
    docker buildx build --platform linux/amd64,linux/arm64 -t myapp:${{ github.sha }} .

这将为 amd64(标准桌面/服务器架构)和 arm64(Raspberry Pi 和一些云服务器使用)构建镜像。

安全性改进:扫描镜像中的漏洞

安全性始终是重中之重。 你不希望推送有漏洞的镜像。

步骤 7:扫描 Docker 镜像中的漏洞

你可以将 Trivy 和 Snyk 等安全工具集成到你的 GitHub Actions 中,以在构建过程中扫描你的镜像。 这是一个使用 Trivy 的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: Scan Docker image for vulnerabilities
  run: |
    trivy image myapp:${{ github.sha }}
    if [ $? -ne 0 ]; then exit 1; fi

如果 Trivy 检测到漏洞,构建将失败。 这确保只有安全的镜像才能被推送。

自动化部署

你已经构建了你的 Docker 镜像,现在必须将其推送到注册表。 现在,是时候部署它了。

步骤 8:部署到 Kubernetes

使用 GitHub Actions,你可以轻松地将你的 Docker 镜像部署到 Kubernetes 集群。 这是如何做到的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- name: Deploy to Kubernetes
  uses: appleboy/kubernetes-action@v0.1.0
  with:
    kubeconfig: ${{ secrets.KUBECONFIG }}
    context: ${{ secrets.K8S_CONTEXT }}
    command: kubectl set image deployment/myapp myapp=myapp:${{ github.sha }}

该 action 使用标记为 ${{ github.sha }} 的最新镜像更新 Kubernetes 部署。

总结

使用 GitHub Actions 自动化你的 Docker 工作流程可以显著提高你的开发管道、可靠性和安全性。 因此,你现在拥有一个无需手动干预的自动化管道,它可以构建 Docker 镜像,将它们推送到注册表,扫描它们以查找已知漏洞,并将它们部署到你的环境中。

最好的部分? 你只需几行 YAML 即可直接从 GitHub 完成所有这些操作。 因此,无论你是推送代码、测试镜像还是部署到生产环境,GitHub Actions 都能满足你的需求。

那么,你准备好冒险了吗? 立即开始自动化你的 Docker 工作流程! 有关完整的演示,请查看 GitHub 存储库。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-052,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
记得留下您的想法哦!
记得留下您的想法哦!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
从“观光式旅游”到“体验式旅游”,区块链功不可没
在经济水平不断提高态势下,区块链旅游时代逐步到来,民众对旅游品质的追求渐进提高,国际旅游人数逐年攀升。尤其是在乐鸥在线文旅等区块链旅游平台逐步建立起去中心化的旅游机制系统后,旅游优质服务体验已经成为衡量旅游质量的标准。旅游行业逐步从“传统观光式”到现今的“体验式”,区块链技术起到了极大的助力作用。
区块链先锋
2018/08/18
1.4K0
从“观光式旅游”到“体验式旅游”,区块链功不可没
token定义在区块链旅游中担任何种角色?
对于旅游业的发展来说,区块链技术同样没有缺席。Token,常见于区块链旅游的文章中。Token是什么?有人翻译成通证,有人翻译成代币,中国人民大学教授杨东,称其为“共票”。然而,放在区块链旅游平台中,Token更多地是指“积分”。例如,乐鸥在线文旅这一区块链旅游平台,自构建之初,就在其旅游生态圈中搭建起了Token系统,作为区块链旅游平台流通与循环使用的工具。
区块链先锋
2018/08/23
2.2K0
token定义在区块链旅游中担任何种角色?
"搭建丝路走廊 共话文旅融合" 2019欧亚经济论坛丝绸之路黄金旅游走廊主题论坛在西安举办
9月10日,由上海合作组织秘书处、陕西省人民政府主办,陕西省文化和旅游厅、西安市人民政府、国际旅游学会、亚太旅游协会、欧亚经济论坛秘书处协办,西安市文化和旅游局、西安浐灞生态区管理委员会、大地风景文旅集团承办的“2019欧亚经济论坛丝绸之路黄金旅游走廊主题论坛”在西安浐灞生态区艾美酒店隆重举办,论坛还发布了《丝绸之路黄金旅游走廊大数据报告》,见证丝绸之路黄金旅游走廊的发展之路。 陕西省副省长方光华,陕西省文化和旅游厅长任宗哲和西安市副市长肖西亮出席并致辞。 上海合作组织秘书长诺罗夫、上合前任秘书长
腾讯文旅
2020/06/17
5890
昌吉回族自治州奏响文旅融合交响曲,文旅链前方指路
古往今来,旅游与文化一直都是惺惺相惜,文化是旅游的灵魂,旅游是文化的载体。如今步入区块链旅游时代,乐鸥在线文旅基于文旅行业共识和区块链技术效用兴起的文旅链正在以平缓之势改变整个旅游产业布局。
区块链先锋
2018/08/17
1.4K0
昌吉回族自治州奏响文旅融合交响曲,文旅链前方指路
"搭建丝路走廊 共话文旅融合" 腾讯文旅加入丝绸之路旅游产业联盟 | 每周文旅资讯精选(9.9-9.15)
"搭建丝路走廊 共话文旅融合"  腾讯文旅加入丝绸之路旅游产业联盟 9月10日,由上海合作组织秘书处、陕西省人民政府主办,陕西省文化和旅游厅、西安市人民政府、国际旅游学会、亚太旅游协会、欧亚经济论坛秘书处协办,西安市文化和旅游局、西安浐灞生态区管理委员会、大地风景文旅集团承办的“2019欧亚经济论坛丝绸之路黄金旅游走廊主题论坛”在西安浐灞生态区艾美酒店隆重举办,论坛还发布了《丝绸之路黄金旅游走廊大数据报告》,见证丝绸之路黄金旅游走廊的发展之路。 大会上还举行了丝绸之路黄金旅游走廊首批合作
腾讯文旅
2020/06/17
3870
首个全域智慧旅游平台上线,区块链旅游的“低配版”?
区块链刮起的飓风已然席卷整个旅游业,上到政府、监管机构,下到旅游平台、游客等,无不深受区块链旅游的恩泽。如今,区块链旅游大风也卷起了较多“低配”产品,一步步顺区块链时代发展。那么这些“低配”产品又是如何发挥自身优势以贴近时代与市场需求的呢?
区块链先锋
2018/08/16
3K0
首个全域智慧旅游平台上线,区块链旅游的“低配版”?
南京推进旅游新方式,区块链旅游大势已成
在产业融合的大背景下,工业旅游作为一种全新业态,成为“旅游+”的重要增长点。7月24日,南京启动工业旅游管理人员培训,来自全市各区旅游部门分管领导及相关工业旅游企业共40余人参加培训。目前南京有包括高淳陶瓷工业旅游区(点)、海尔曼斯工业旅游区(点)、南京金箔工业旅游区(点)、南京卷烟厂工业旅游区(点)、云锦博物馆等在内的一批全国工业旅游示范点。
区块链先锋
2018/07/30
6.9K0
南京推进旅游新方式,区块链旅游大势已成
区块链驱动未来智能商业发展
在26日北京举行的“链接世界,共享未来”中国旅游区块链论坛上,中纪委驻国家旅游局纪检组原组长王军说,结合区块链的技术,传统旅游业或将有颠覆性改变,期待新理论、新技术为旅游业的创新发展注入更多活力,带来更多可能。
区块链先锋
2018/07/28
7K0
区块链驱动未来智能商业发展
旅游行业可以与区块链一起繁荣
对于区块链旅游行业而言,2018年是非常活跃的一年,许多创业公司纷纷涌现投身于这一行业,展示了这一颠覆性技术在旅游行业的实际用途。目前,区块链技术已应用到旅游行业的四个场景中。
陌上花开2018
2018/05/29
9601
旅游行业可以与区块链一起繁荣
对话马云:区块链在未来20年不仅重构金融系统,旅游才是的最佳重构点
区块链旅游自崛起之日就拉开了旅游行业的风口,这是来自对第三产业大发展的支持,是来自“全民旅游”时代到来的期盼。实际上,区块链旅游的作用不仅仅是为第三产业提供新的旅游产业支柱,带来新的经济增长点,更是在未来20年重构其旅游系统体系,颠覆整个旅游产业。
区块链先锋
2018/08/20
7700
对话马云:区块链在未来20年不仅重构金融系统,旅游才是的最佳重构点
中国银行利用区块链助力西藏脱贫,旅游扶贫进入正题
区块链的运用不仅局限于商业层面,在造福民生方面也开始崭露头角。“利用区块链技术助力偏远地区脱贫攻坚”这样的想法逐步落到实地,这与早期区块链旅游扶贫的提议如出一辙,并给区块链旅游扶贫的实践提供了借鉴。
陌上花开2018
2018/05/25
1.3K0
中国银行利用区块链助力西藏脱贫,旅游扶贫进入正题
CTC文旅链全球路演引发的冷思考:区块链旅游时代真的已经到来?
区块链自问世就颇受关注,区块链技术也已经在各行各业蓄势待发,以区块链旅游为主导的文化旅游产业更是因为文旅链,被赋予“颠覆”时代的光环,掀起国内旅游市场的热潮。
区块链先锋
2018/07/16
9460
CTC文旅链全球路演引发的冷思考:区块链旅游时代真的已经到来?
去哪儿兵败携程后,携手区块链旅游从头再来
携程和去哪儿在过去的十年,战火纷飞,旅游行业因其恶性竞争而“天翻地覆”。如今步入区块链旅游时代,一直寻求新技术立足点的去哪儿也找到了新的生机。去哪儿的区块链旅游布局又是如何力挽狂澜,在携程“猖狂”的垄断时代,寻找自身的立足之地?
区块链先锋
2018/08/02
5.3K1
去哪儿兵败携程后,携手区块链旅游从头再来
携程新危机!“VR+旅游”能和区块链旅游相媲美吗?
自去年7月欧洲旅游社巨头途易集团宣布布局区块链,到今年初乐鸥在线文旅迅速将区块链的“爪牙”布局到旅游六大领域,区块链旅游异军突起,不断分占传统旅游市场份额。传统OTA平台逐步陷入岌岌可危的局势。
区块链先锋
2018/08/10
1.7K0
携程新危机!“VR+旅游”能和区块链旅游相媲美吗?
文化和旅游部等十部门发布关于深化“互联网+旅游”推动旅游业高质量发展的意见​
各省、自治区、直辖市及计划单列市人民政府,新疆生产建设兵团,国务院有关部门:  旅游业是现代服务业的重要组成部分,已经成为我国国民经济的战略性支柱产业。当前,以互联网为代表的现代信息技术持续更新迭代,为旅游业高质量发展提供了强大动力。为坚定不移建设网络强国、数字中国,持续深化“互联网+旅游”,推动旅游业高质量发展,更好发挥旅游业在促进经济社会发展、满足人民美好生活需要等方面的重要作用,助力构建以国内大循环为主体、国内国际双循环相互促进的新发展格局,经国务院同意,现提出如下意见。  一、总体要求  (一
腾讯文旅
2020/12/01
5160
贸易战成加速区块链旅游发展的重要导火索
区块链旅游问世以来,就其影响力、功能效用方面饱受争议,而“颠覆传统旅游业”在如今看来只是说笑,那么区块链旅游在旅游业的突破口到底在哪?
区块链先锋
2018/07/31
6K0
贸易战成加速区块链旅游发展的重要导火索
数字周报84期丨腾讯联合埃森哲发布《全真互联白皮书》
1、腾讯联合埃森哲发布《全真互联白皮书》 9月26日,腾讯联合埃森哲发布《全真互联白皮书》,全面呈现这一面向未来的技术体系和应用场景。 白皮书介绍,全真互联是通过多种终端和形式,实现对真实世界全面感知、连接、交互的一系列技术集合与数实融合创新模式。对个人,全真互联能随时随地提供身临其境的体验;对企业和组织,全真互联让服务变得更可度量,质量更可优化,推动组织效能提升;对社会,全真互联让资源利用效率提升,为产业发展模式带来创新,提高政府治理效能,促进社会可持续发展。全真互联将产生融合数字与实体、跨越时间和空间
腾讯文旅
2022/09/27
9280
数字周报84期丨腾讯联合埃森哲发布《全真互联白皮书》
区块链与工业4.0颠覆旅游行业,需面临的挑战
工业4.0是由德国政府《德国2020高技术战略》所提出的十大未来项目之一。而区块链则是工业4.0的重要组成部分。两者应用于旅游行业,诞生了“区块链旅游”这一旅游新模式。“诞生”虽易,但新模式的延续及发展,并非轻而易举,区块链与工业4.0颠覆旅游行业,需面临巨大的挑战。
陌上花开2018
2018/05/28
9401
区块链与工业4.0颠覆旅游行业,需面临的挑战
文化和旅游部新任党组书记胡和平的“文旅观”
7月31日,文化和旅游部发布消息,日前,中共中央决定:胡和平同志任文化和旅游部党组书记,雒树刚同志不再担任文化和旅游部党组书记。这位文化和旅游部的新任党组书记此前曾多次在公开场合阐述自己对文旅工作的具体思考。 2017年5月3日至5日,时任陕西省省长的胡和平在西安调研文化建设。 座谈会上,胡和平强调,陕西文化资源丰富,文化底蕴深厚,文化优势独特,要切实增强建设文化强省的使命感责任感,紧紧围绕追赶超越和“五个扎实”要求,全方位提升陕西文化软实力。 要把繁荣文化事业作为文化强省的基础,着力推进基本公
腾讯文旅
2020/08/07
3880
旅游行业真的需要区块链技术的加持吗?
尽管“区块链+”不断涌现,但“区块链+”并不是所有行业都通用,更多的则是借区块链热度的伪应用,缺乏可行性。“区块链+旅游”也曾一度受到质疑,那么,旅游行业是否需要区块链这一技术加持?
陌上花开2018
2018/05/26
1K1
旅游行业真的需要区块链技术的加持吗?
推荐阅读
从“观光式旅游”到“体验式旅游”,区块链功不可没
1.4K0
token定义在区块链旅游中担任何种角色?
2.2K0
"搭建丝路走廊 共话文旅融合" 2019欧亚经济论坛丝绸之路黄金旅游走廊主题论坛在西安举办
5890
昌吉回族自治州奏响文旅融合交响曲,文旅链前方指路
1.4K0
"搭建丝路走廊 共话文旅融合" 腾讯文旅加入丝绸之路旅游产业联盟 | 每周文旅资讯精选(9.9-9.15)
3870
首个全域智慧旅游平台上线,区块链旅游的“低配版”?
3K0
南京推进旅游新方式,区块链旅游大势已成
6.9K0
区块链驱动未来智能商业发展
7K0
旅游行业可以与区块链一起繁荣
9601
对话马云:区块链在未来20年不仅重构金融系统,旅游才是的最佳重构点
7700
中国银行利用区块链助力西藏脱贫,旅游扶贫进入正题
1.3K0
CTC文旅链全球路演引发的冷思考:区块链旅游时代真的已经到来?
9460
去哪儿兵败携程后,携手区块链旅游从头再来
5.3K1
携程新危机!“VR+旅游”能和区块链旅游相媲美吗?
1.7K0
文化和旅游部等十部门发布关于深化“互联网+旅游”推动旅游业高质量发展的意见​
5160
贸易战成加速区块链旅游发展的重要导火索
6K0
数字周报84期丨腾讯联合埃森哲发布《全真互联白皮书》
9280
区块链与工业4.0颠覆旅游行业,需面临的挑战
9401
文化和旅游部新任党组书记胡和平的“文旅观”
3880
旅游行业真的需要区块链技术的加持吗?
1K1
相关推荐
从“观光式旅游”到“体验式旅游”,区块链功不可没
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验