当前位置:   article > 正文

Springboot项目Github Action生成Docker镜像_在页面提交代码打包成镜像的项目

在页面提交代码打包成镜像的项目

最近下班后的练习比较多,而且修改后的东西提交后在阿里云运行。项目的更新比较麻烦。因此,想git push后,优雅的docker run就可以把修改后的项目运行起来。

首先来比较一下:

一、传统的Springboot项目更新方式

1.提交代码:git push

2.打包:maven clean & maven package

3.传输:将maven利用pom.xml配置文件生成的xxx.jar传输到阿里云服务器

4.运行:java -jar xxx.jar运行

 

而今天记录的教程想要达到的是,提交代码后,只需要在阿里云服务器一行命令运行镜像即可。

1.git push

2.docker run

 

git push后优雅地docker run需要做什么呢?

首先,你得有pom.xml、Dockerfile和docker仓库。

pom.xml的artificatId和version决定了打包之后的jar文件名。比如我这个就是 demo-0.0.1.jar。

mvn package后jar文件在target目录下,对应的Dockerfile的写法

docker镜像仓库不用多说了,dockerhub或者阿里云镜像仓库都可以。这里我用的是dockerhub,创建一个账号和仓库就好了。

 

 

下面开始主要的设置Github Actions操作说明:

1.创建Github Action工作流:github 项目的 Actions > New workflow

2.创建maven.yml文件:找到Java With Maven,点击Set up this workflow来创建yml文件

yml文件的路径默认是 项目根目录/.github/workflows/maven.yml,建议这个yml文件路径不要更改,我一开始就是把它放在了项目根目录Actions在git push后一直无法运作。

3.编辑maven.yml文件,使其符合你的需求。

  Github Actions的功能很强大,简而言之,这一步是正确地编写yml文件,使其符合我们自动化部署的需求。

  这里我们的需求是什么?一开始我们分析了传统的项目更新方式,使用了maven 打包。这里依然是一样的,并没有高级多少,只是github的服务器按照这个maven.yml执行打包操作罢了。

  编写yml使其实现:

  1.git push 后 maven 自动打包

  2.利用Dockerfile自动制作docker镜像

  3.自动推送制作好的docker镜像到镜像仓库

默认的maven.yml只能实现git push后,使用maven打包生成jar文件。要生成镜像并且推送到指定的镜像仓库还得修改,修改编写后的yml文件如下:

  1. # This workflow will build a Java project with Maven
  2. # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
  3. name: Java CI with Maven
  4. on:
  5. push:
  6. branches: [ master ]
  7. pull_request:
  8. branches: [ master ]
  9. jobs:
  10. build:
  11. runs-on: ubuntu-latest
  12. steps:
  13. - uses: actions/checkout@v2
  14. - name: Set up JDK 1.8
  15. uses: actions/setup-java@v1
  16. with:
  17. java-version: 1.8
  18. - name: Build with Maven
  19. run: mvn -B package --file pom.xml
  20. - name: BuildDockerImage
  21. run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
  22. - name: Publish to Docker Repository
  23. uses: elgohr/Publish-Docker-Github-Action@master
  24. with:
  25. name: christopherchen/practice:practice
  26. username: ${{ secrets.DOCKER_USERNAME }}
  27. password: ${{ secrets.DOCKER_PASSWORD }}

仔细看,与默认的maven.yml相比并没有新增多少东西。

    - name: BuildDockerImage
      run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
    - name: Publish to Docker Repository
      uses: elgohr/Publish-Docker-Github-Action@master
      with:
        name: christopherchen/practice:practice
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}

这里的 -name后面就是一个子任务名称,run后面则是要运行的命令行,在什么环境运行呢?就是上面的 ubuntu-latest。

BuildDockerImage:这一步 使用docker build利用Dockerfile生成docker镜像。

Publish to Docker Repository:这一步将上一步打包生成的docker镜像推送至指定的镜像仓库。

with下面的name是镜像仓库地址,username是镜像仓库登录的用户名,password是镜像仓库登录的密码。由于这些东西是比较隐秘的,这里用了github的secret。

项目的Settings > Secrets > New repository secret 创建密钥。就是类似与键值对,创建后在yml中用 ${{key}}来代替它的value。

完成以上设定就可以了。git push后Actions自动执行workflow工作流,打包镜像推送到docker仓库。

然后在阿里云服务器里,docker login,由于我使用的tagname是practice,因此后面docker pull的时候也是 docker pull 仓库地址:practice。使用 docker pull christopherchen/practice:practice 即可下载到打包好的镜像。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/813300
推荐阅读
相关标签
  

闽ICP备14008679号