password
URL
type
status
date
slug
summary
tags
category
icon
如何使用 GitHub Action 部署 Docker 镜像(超详细教程)
随着心理学领域中数据处理(如 fMRI 和 EEG 数据处理)以及计算建模(如贝叶斯建模、认知建模)对计算环境要求的不断提升,建立一个稳定可靠的计算环境变得尤为重要。在这种情况下,Docker 的使用提供了一种有效的解决方案,能够确保环境的一致性和可移植性,避免了本地环境配置繁琐的问题。
然而,Docker 的部署并不总是那么简单,特别是在国内网络环境下,下载镜像和依赖可能会遇到速度慢甚至失败的情况。这时,使用 GitHub Actions 自动化部署 Docker 镜像就显得格外有意义。其优势在于:
- 无需本地配置:只要代码推送到 GitHub 仓库,GitHub Actions 就会自动完成构建和推送,省去了本地繁杂的操作。
- 跨平台兼容:通过 Buildx 支持多平台镜像的构建,轻松应对不同硬件架构的需求。
- 优化网络环境问题:利用 GitHub 的服务器优势,避免了国内网络环境下的镜像拉取困境,大大提升了构建速度和成功率。
一些案例:
1. 准备 Dockerfile 文件
首先,你需要创建一个
Dockerfile
,这个文件描述了如何构建你的 Docker 镜像。例如,我们构建一个基于pymc的贝叶斯建模计算环境。用于可以通过如下步骤创建 Dockerfile
。- 其中,USER_NAME 和 USER_EMAIL 可以替换为你自己的任意的账户名和邮箱。
2. 构建并推送 Docker 镜像
我们有两种方法可以构建和推送 Docker 镜像:
- 传统使用本地构建并推送
- 使用 GitHub Actions 自动构建并推送
2.1 本地构建并推送
首先,确保你已经安装了 Docker 并启用了 Buildx 插件。Buildx 是 Docker 提供的扩展工具,允许我们为多平台构建镜像。
你可以运行以下命令来为不同架构构建镜像:
- 同样,USER_NAME 和 IMAGE_NAME 替换为你自己的 docker 账户名和任意的docker镜像名称,例如,pyBayesian
2.2 使用 GitHub Actions 自动化构建
GitHub Actions 是一种强大的工具,可以帮助我们自动化构建和推送 Docker 镜像。你可以通过以下步骤来配置 GitHub Actions。
2.2.1 创建 GitHub Actions 工作流
在你的仓库中创建
.github/workflows/docker-image.yml
文件:然后在
docker-image.yml
中写入以下内容:name: PyBayesian on: push: branches: - main workflow_dispatch: jobs: buildx: runs-on: ubuntu-latest env: NAME_VERSION: pybayesian:2024v1 steps: - name: Checkout uses: actions/checkout@v4 - name: Docker login uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: push amd64 run: docker buildx build --platform linux/amd64 -t ${{ secrets.DOCKERHUB_USERNAME }}/${{env.NAME_VERSION}}-amd64 -f Dockerfile . --push - name: push arm64 run: docker buildx build --platform linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/${{env.NAME_VERSION}}-arm64 -f Dockerfile . --push - name: Build the Combined Manifest run: docker buildx build --platform linux/amd64,linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/${{env.NAME_VERSION}} -f Dockerfile . --push - name: Build the Newest Manifest run: docker buildx build --platform linux/amd64,linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/pybayesian:latest -f Dockerfile . --push
on: 表示部署构建的触发机制。例如,这段代码会在
main
分支有更新时自动触发镜像构建和推送。同时,workflow_dispatch
运行用户在github上手动进行构建。在build jobs 中, NAME_VERSION 定义了我们镜像的名称和版本,可以通过
${{env.NAME_VERSION}}
进行引用。 docker/login-action@v3 表示我们需要登陆 docker 来将docker镜像上传到自己账户的 dockerhub中。在下一节我们可以看到,如何在 github 中如何配置 docker 的账户和token。 我们构建了四个任务,分别对应构建 amd64,arm64,两个平台混合,以及将两个平台混合镜像标记为新标签的部署任务。2.2.2 配置 GitHub Secrets
为了确保 GitHub Actions 能安全地登录 Docker Hub,你需要在 GitHub 项目的设置中配置 Secrets。具体步骤如下:
- 在dockerhub 中申请个人token。https://app.docker.com/settings/personal-access-tokens

- 在GitHub 仓库中设置账户和token
- 点击右上角的 **Settings,**在左侧导航栏找到 Secrets and variables,点击 Actions。

- 添加两个 Secrets:

- DOCKERHUB_USERNAME:填入你的 Docker Hub 用户名
- DOCKERHUB_TOKEN:填入刚才获取的tokens
添加完成后,GitHub Actions 将能够通过你的账户登录 Docker Hub,并安全地推送镜像。
3. 最后一步:推送代码并自动部署
现在,一切配置已经完成!每当你将代码推送到
main
分支时,GitHub Actions 会自动帮你构建 Docker 镜像并推送到 Docker Hub 上。或者进行手动推送:

总结
以上就是如何使用 GitHub Actions 自动化部署 Docker 镜像的完整流程。从准备 Dockerfile,到使用 GitHub Actions 构建并推送 Docker 镜像,整个过程简单而高效。如果你还没尝试过自动化部署,赶紧动手试试吧!希望这篇教程对你有帮助,有问题的话欢迎留言讨论哦~
如果你喜欢这篇文章,别忘了点赞、收藏、分享给更多的小伙伴们哦!