如何通過(guò)idea把項(xiàng)目到私有倉(cāng)庫(kù)
前言
該篇文章主要是harbor倉(cāng)庫(kù)創(chuàng)建和使用,如果需要看docker創(chuàng)建部署可以看第一篇文章。
通過(guò)下面四篇文章可以快速的實(shí)現(xiàn)項(xiàng)目運(yùn)維部署管理,大大減少項(xiàng)目維護(hù)的工作量
一、修改maven配置
我們本地如果安裝了docker環(huán)境則不用做處理,直接調(diào)用本地環(huán)境進(jìn)行打包制作鏡像發(fā)布;但很多時(shí)候我們本地不一定會(huì)安裝docker的環(huán)境,這時(shí)候我們就需要通過(guò)配置遠(yuǎn)程連接服務(wù)器的方式進(jìn)行打包制作鏡像。
打開idea設(shè)置,進(jìn)入Settings > Build, Execution, Deployment > Build Tools > Maven > Runner,配置環(huán)境變量:
DOCKER_TLS_VERIFY:?jiǎn)⒂冒踩?yàn)證DOCKER_HOST:服務(wù)器docker的地址DOCKER_CERT_PATH:遠(yuǎn)程的服務(wù)器docker的加密證書地址
DOCKER_TLS_VERIFY=1;DOCKER_HOST=https://10.37.129.2:2376;DOCKER_CERT_PATH=/Library/zheng/docker/tls

二、配置pom.xml文件
下面配置由幾部分組成:
<properties>主要用來(lái)讀取版本聲明和harbor倉(cāng)庫(kù)域名地址<plugins>用來(lái)聲明插件集合,主要包括了maven打包的插件以及docker構(gòu)建插件
下面的配置是可以直接粘貼使用的,只需要修改自己的harbor倉(cāng)庫(kù)的賬號(hào)密碼,以及項(xiàng)目名稱即可
<properties>
<!-- docker鏡像的版本號(hào) -->
<image.tag.verion>1.0.1</image.tag.verion>
<!-- 遠(yuǎn)程harbor倉(cāng)庫(kù)的域名地址 -->
<docker.repostory>10.37.129.2:5000</docker.repostory>
<!-- harbor為這個(gè)項(xiàng)目創(chuàng)建的目錄 -->
<harbor.project>ssyx</harbor.project>
</properties>
<build>
<finalName>${project.artifactId}</finalName> <!--jar包名字-->
<plugins>
<!-- Maven Compiler Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 在此處添加 Maven 編譯插件的配置,如果需要的話 -->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Docker 構(gòu)建插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<!-- maven打包階段就觸發(fā)dockerfile-maven-plugin插件的以下動(dòng)作 -->
<phase>package</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
<goal>push</goal>
</goals>
<configuration>
<!-- docker鏡像版本號(hào),引用上面的 -->
<tag>${image.tag.verion}</tag>
</configuration>
</execution>
</executions>
<configuration>
<!-- 指定dockerfile所在目錄 -->
<contextDirectory>${project.basedir}</contextDirectory>
<!-- 指定docker鏡像名,格式必須這樣寫, 注意:這里${docker.repostory}倉(cāng)庫(kù)地址必須有,因?yàn)閐ocker需要這個(gè)去連接你真實(shí)倉(cāng)庫(kù)地址,否則就會(huì)連接到官方的docker.io倉(cāng)庫(kù)了, 鏡像名稱格式是:harbor倉(cāng)庫(kù)域名/子倉(cāng)庫(kù)/鏡像名稱,版本號(hào)由上面的tag動(dòng)作標(biāo)注 -->
<repository>${docker.repostory}/${harbor.project}/${project.artifactId}</repository>
<!-- 連接遠(yuǎn)程harbor倉(cāng)庫(kù)的用戶名和密碼 -->
<username>admin</username>
<password>Harbor12345</password>
<!-- 傳遞環(huán)境變量:JAR_FILE給dockerfile -->
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
三、創(chuàng)建Dockerfile配置文件
Dockerfile作用主要是構(gòu)建docker的鏡像使用,下面的代碼大致的作用就是先指定基礎(chǔ)鏡像,因?yàn)槭莏ava應(yīng)用,所以指定jdk作為啟動(dòng)環(huán)境,然后在讀取本地maven打好的jar包,構(gòu)建好一個(gè)鏡像,最后在通過(guò)ENTRYPOINT設(shè)置啟動(dòng)命令
需要注意FROM 引用的jdk鏡像根據(jù)自己情況選擇一個(gè)
# 設(shè)置JAVA版本,如果需要生成圖片(驗(yàn)證碼等),則需要使用 openjdk:8-jdk 這個(gè)基礎(chǔ)鏡像、
# openjdk:8-jre #如果只需要運(yùn)行時(shí)環(huán)境則可以使用這個(gè)會(huì)比jdk的更小
# openjdk:8-jdk
FROM openjdk:8-jdk-alpine
# 接收pom.xml文件傳遞的變量
ARG JAR_FILE
# 注意WORKDIR指向的目錄必須提前存在,否則后面復(fù)制文件的時(shí)候會(huì)失敗,導(dǎo)致容器無(wú)法運(yùn)行
RUN echo "JAR_FILE is: ${JAR_FILE}" && mkdir /app
WORKDIR /app
COPY target/${JAR_FILE} ./app.jar
RUN echo "ls result" && ls -l /app
ENTRYPOINT ["java","-Xms512m", "-Xmx1g", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
四、執(zhí)行
最后點(diǎn)擊package即可執(zhí)行打包jar并且把jar包轉(zhuǎn)為鏡像發(fā)布到倉(cāng)庫(kù)

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- IntelliJ IDEA下載GitHub私有倉(cāng)庫(kù)到本地的方法(新版)
- 在IntelliJ?IDEA中修改Git遠(yuǎn)程倉(cāng)庫(kù)地址的詳細(xì)流程
- 解決Maven項(xiàng)目idea找不到本地倉(cāng)庫(kù)jar包問(wèn)題以及使用mvn install:install-file
- 如何取消IDEA中的項(xiàng)目和Git倉(cāng)庫(kù)的關(guān)聯(lián)
- IDEA自定義Maven倉(cāng)庫(kù)的實(shí)現(xiàn)
- idea2023連接gitee遠(yuǎn)程倉(cāng)庫(kù)的實(shí)現(xiàn)方法
相關(guān)文章
如何使用Java模擬退火算法優(yōu)化Hash函數(shù)
為了解決局部最優(yōu)解問(wèn)題,1983年,Kirkpatrick等提出了模擬退火算法(SA)能有效的解決局部最優(yōu)解問(wèn)題。模擬退火算法包含兩個(gè)部分即Metropolis算法和退火過(guò)程。Metropolis算法就是如何在局部最優(yōu)解的情況下讓其跳出來(lái),是退火的基礎(chǔ)2021-06-06
Java中的內(nèi)存模型(JMM)和鎖機(jī)制詳解
這篇文章主要介紹了Java中的內(nèi)存模型(JMM)和鎖機(jī)制使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
詳解Java編程中包package的內(nèi)容與包對(duì)象的規(guī)范
這篇文章主要介紹了Java編程中包package的內(nèi)容與包對(duì)象的規(guī)范,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-12-12

