前言
Docker和Spring Boot是非常流行的組合,我們將利用GitLab CI的優(yōu)勢,并在應(yīng)用程序服務(wù)器上自動構(gòu)建,推送和運行Docker鏡像。
GitLab CI
Gitlab CI/
CD服務(wù)是GitLab的一部分,每當(dāng)開發(fā)人員將代碼推送到GitLab存儲庫時,它都會在所需的環(huán)境中構(gòu)建,測試和存儲最新的更改。選擇GitLab CI的一些主要原因:
- 易于學(xué)習(xí),使用和可擴(kuò)展
- 維護(hù)容易
- 整合容易
- CI完全屬于GitLab存儲庫的一部分
- 良好的Docker集成
- 鏡像托管(Container registry)-基本上是你自己的私有Docker Hub
- 從成本上來說,GitLab CI是一個很好的解決方案。每個月你有2000分鐘的免費構(gòu)建時間,對于某些項目來說,這是綽綽有余的
為什么GitLab CI超越Jenkins
這無疑是一個廣泛討論的話題,但是在本文中,我們將不深入探討該話題。GitLab CI和Jenkins都有優(yōu)點和缺點,它們都是功能非常強(qiáng)大的工具。
那為什么選擇GitLab?
如前所述,CI完全是GitLab存儲庫的一部分,這意味著不需要安裝它,并且維護(hù)最少。yml腳本完成后,你便或多或少地完成了所有工作。對于小型項目使用Jenkins,你就必須自己設(shè)置和配置所有內(nèi)容。通常,你還需要一臺專用的Jenkins服務(wù)器,這也需要額外的成本和維護(hù)。
使用GitLab CI 前提條件
如果需要與這些前提條件有關(guān)的任何幫助,我已提供相應(yīng)指南的鏈接。
- 你已經(jīng)在GitLab上推送了Spring Boot項目
- 你已在應(yīng)用程序服務(wù)器上安裝了Docker(指南)
- 你具有Docker鏡像的鏡像托管(在本指南中將使用Docker Hub)
- 你已經(jīng)在服務(wù)器上生成了SSH RSA密鑰(指南)
你要創(chuàng)建什么
你將創(chuàng)建
Dockerfile
和
.gitlab-ci.yml
,它們將自動用于:
- 構(gòu)建應(yīng)用程序Jar文件
- 構(gòu)建Docker鏡像
- 將鏡像推送到Docker存儲庫
- 在應(yīng)用程序服務(wù)器上運行鏡像
基本項目信息
本文的Spring Boot應(yīng)用程序是通過Spring Initializr生成的。這是一個基于Java 8或Java11構(gòu)建的Maven項目。后面,我們將介紹Java 8和Java 11對Docker鏡像有什么影響。
Docker文件
讓我們從Dockerfile開始。腳本已經(jīng)準(zhǔn)備好,如下:
FROM?maven:3.6.3-jdk-11-slim?AS?MAVEN_BUILD
#FROM?maven:3.5.2-jdk-8-alpine?AS?MAVEN_BUILD?FOR?JAVA?8
ARG?SPRING_ACTIVE_PROFILE
MAINTAINER?Jasmin
COPY?pom.xml?/build/
COPY?src?/build/src/
WORKDIR?/build/
RUN?mvn?clean?install?-Dspring.profiles.active=$SPRING_ACTIVE_PROFILE?