一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置

zhoudian發表於2020-06-24

第一次發帖,分享一個我遇到的問題吧
最近有用springBoot寫一個測試平臺的後端服務,感覺以後容器部署會是主流吧,所以拋棄Jenkins部署到虛擬機器的方式,改使用Gitlab自帶的cicd來打映象包

Dockerfile很簡單,就是將專案jar上傳啟動就行,裡面的倉庫名稱和路徑已隱去

FROM xxx.xx.com/images/xxx:centos7.3-openjdk1.8
RUN mkdir -p /home/app
WORKDIR /home/app
COPY target/test-project-0.0.1-SNAPSHOT.jar /home/app/
EXPOSE 80
ENTRYPOINT ["java", "-jar","/home/app/test-project-0.0.1-SNAPSHOT.jar"]

然後就是.gitlab-ci.yml檔案了,這裡分了兩步,一步是mvn打包,第二步就是打Docker映象並上傳到倉庫
stages:

  • package
  • build

package:
stage: package
image: xxx.xxx.com/xxx/ci:maven-jdk-image
script:
- mvn -U clean package -Dmaven.test.skip=true
only:
- tags
artifacts:
expire_in: 1 day
paths:
- target/test-project-0.0.1-SNAPSHOT.jar

docker-build:
stage: build
script:
- docker login xxx.xxx.com -u $HUBUSER -p $HUBPASS
- docker build . -t xxx.xxx.com/test/xxx-project:$CI_COMMIT_TAG
- docker push xxx.xxx.com/test/xxx-project:$CI_COMMIT_TAG
only:
- tags

然後我遇到啥問題呢,就是第一個job執行了以後會把jar包打出來,但是第二個job執行的時候執行Dockerfile總是提示沒有jar,然後看日誌才發現執行job前會清理target目錄,網上查了好久資料以後才知道加paths以後就可以把前一個job的檔案傳遞到後一個job
paths:
- target/test-project-0.0.1-SNAPSHOT.jar

以後每次只需要打一個tag就可以自動打映象並上傳到倉庫了

相關文章