• 【Docker】github Actions自动构建


    通过github的Actions 实现代码push仓库后自动构建容器并发布到DockerHub.

    创建项目

    首先我们创建一个项目,这里我就用Vue项目进行演示.

    npm init vue@latest Actions-demo-swback
    
    • 1

    image-20231027222844079

    进去项目,按照提示执行 npm install npm run dev 启动项目.

    首先保证项目的正常启动。

    控制台显示如下,启动成功。

    image-20231027223304028

    image-20231027223304028

    image-20231027223258913

    创建配置文件

    在项目根目录创建.github\workflows\docker-build.yml 文件

    目录结构

    image-20231027223440351

    docker-build.yml 内容如下

    name: Vue Image
    on: [push]
    jobs:
      Docker-Build-Push:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout
            uses: actions/checkout@v2
          - name: Set up QEMU
            uses: docker/setup-qemu-action@v1
          - name: Set up Docker Buildx
            id: buildx
            uses: docker/setup-buildx-action@v1
          - name: Login to DockerHub
            uses: docker/login-action@v1
            with:
              username: ${{ secrets.DOCKER_USERNAME }}
              password: ${{ secrets.DOCKER_PASSWORD }}
          - name: Build and push
            id: docker_build
            uses: docker/build-push-action@v2
            with:
              push: true
              platforms: linux/amd64,linux/arm64
              tags: ${{ secrets.DOCKER_USERNAME }}/actions:1.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    然后我们可以尝试修改vue代码.

    然后build代码.

    npm run build
    
    • 1

    image-20231027225612556

    这里要注意.gitignore文件里默认将dist文件是过滤的,我们需要删除,不然push不上去dist中的文件.

    创建Dockerfile

    既然自动构建,那么就需要Dockerfile

    在项目根目录下创建Dockerfile文件

    因为我这里是默认的nginx镜像. 默认web目录是/usr/share/nginx/html

    FROM nginx:latest
    
    COPY ./dist/ /usr/share/nginx/html/
    
    #暴露端口
    EXPOSE 80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    github配置

    github创建一个干净的仓库用来练习.

    image-20231027223712325

    按照下图所示顺序,依次打开

    image-20231027223816467

    创建变量,这里的DOCKER_USERNAME 需要和yml中一致,不然会在构建的过程中因为找不到而导致dockerhub无法登录.

    image-20231027223832140

    image-20231027223855990

    创建完毕之后,进行git提交.

    image-20231027224128986

    自动构建中

    然后打开github,如下图所示, 可以看到Actions 下自动构建的项目正在进行.

    image-20231027224218101

    如果运行失败,可以点进去查看详情.

    我这里就是登录失败,原因是在上面创建变量的过程中,光截图忘记保存了.

    image-20231027224400626

    可以点击左侧,使其重新运行,无需重新push.

    image-20231027224434082

    成功之后如下:

    image-20231027230159095

    dockerhub验证

    dockerhub去查看验证

    其中yml中最后一行的配置就是dockerhub的仓库名以及版本号

    tags: ${{ secrets.DOCKER_USERNAME }}/actions:1.0
    
    • 1

    image-20231027230317676

    本地拉取镜像

    docker run -itd -P swback/actions:1.0
    
    • 1

    image-20231027230412623

    启动镜像

    docker run -itd -P swback/actions:1.0
    
    • 1

    image-20231027230624206

    image-20231027230715417

    自此,整个流程结束, 刚开始学习的时候会感到很麻烦,但是多练习几次,就会比较熟悉. 不需要我们每次都去修改代码,构建docker,上传仓库.

    在这个过程中,我们只需要对代码进行修改以及提交. 当然,docker的版本号也要修改一下, 之后就可以等待片刻,然后从仓库直接拉去容器.

    简化工作流程.

  • 相关阅读:
    评价指标篇——IOU(交并比)
    小程序游戏个性化制作,小程序游戏的特点?
    前端工程师个人的价值在哪里(换一个人能不能做?)【前端晋升必看】
    牛客刷题---年会抽奖
    java date操作
    汽车行业怎么做网络推广有效果?汽车行业怎样做线上推广?
    c++标准模板(STL)- 算法 (std::remove, std::remove_if)
    TOGAF®10标准读书会首场活动圆满举办,精彩时刻回顾!
    解决安装nvm以后windows cmd无法找到npm/yarn命令的问题
    CentOS 7 安装教程(基于虚拟机安装)
  • 原文地址:https://blog.csdn.net/qq_30817059/article/details/134085559