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檔案如下:
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
- 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 }}
仔細看,與預設的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 即可下載到打包好的映象。
相關文章
- 兩種github action 打包.Net Core 專案docker映象推送到阿里雲映象倉庫GithubDocker阿里
- 通過 Github Action 釋出 SpringBoot Docker 專案到雲伺服器GithubSpring BootDocker伺服器
- Jenkins把GitHub專案做成Docker映象JenkinsGithubDocker
- 使用Maven外掛構建SpringBoot專案,生成Docker映象push到DockerHub上MavenSpring BootDocker
- SpringBoot專案打成Docker映象並推送阿里雲Spring BootDocker阿里
- 使用Github Action來輔助專案管理Github專案管理
- 通過GitHub Action自動部署Maven專案GithubMaven
- Docker部署SpringBoot專案DockerSpring Boot
- Docker(四)Docker部署SpringBoot專案DockerSpring Boot
- Docker-Docker部署SpringBoot專案DockerSpring Boot
- Java(SpringBoot)專案打包(構建)成`Docker`映象的幾種方式JavaSpring BootDocker
- 白嫖GitHub Action實現開源專案CICDGithub
- 利用 GitHub Action 自動釋出 DockerGithubDocker
- 基於 Docker 映象部署 go 專案DockerGo
- docker - [15] springboot微服務打包docker映象DockerSpring Boot微服務
- 初試Docker 搭建SpringBoot 專案DockerSpring Boot
- 初學docker部署springboot專案DockerSpring Boot
- SpringBoot使用Docker快速部署專案Spring BootDocker
- SpringBoot 微服務打包 Docker 映象Spring Boot微服務Docker
- Azure Devops實踐(5)- 構建springboot專案打包docker映象及容器化部署devSpring BootDocker
- 用golang官方Docker映象執行專案GolangDocker
- Github Action釋出Github
- Apache 基金會將其所有專案雙主映象至 GitHubApacheGithub
- git推送專案到github並使用gitee做映象倉庫GithubGitee
- 拂衣天氣(微天氣)Github Action映象自動構建與推送Github
- GitHub生成帶token的專案程式碼連結地址Github
- Jenkins in Action :GitLab 部署 Maven 專案JenkinsGitlabMaven
- Github Action Workflow 實踐Github
- 如何基於 Docker 快速搭建 Springboot + Mysql + Redis 專案DockerSpring BootMySqlRedis
- 在python專案的docker映象裡使用pdm管理依賴PythonDocker
- SpringBoot 構建 Docker 映象的最佳 3 種方式Spring BootDocker
- [玩轉 Github] — 如何為倉庫專案生成漂亮的徽章Github
- Centos8.3、docker部署springboot專案實戰記錄CentOSDockerSpring Boot
- 使用 github action 在多個環境中快速地測試你的開源專案Github
- 真香!GitHub Action一鍵部署Github
- 安利 GitHub action - 挺香的Github
- Github Action 快速上手指南Github
- 【docker專欄5】詳解docker映象管理命令Docker