0、前提:docker、 maven、java均已安裝,docker 鏡像私服均已設(shè)置網(wǎng)絡(luò)也開通
本文基于Docker進(jìn)行構(gòu)建,也可以指定構(gòu)建信息到 POM 中構(gòu)建,大家自行搜索
1、首先是一些網(wǎng)絡(luò)和docker相關(guān)配置的打開
2375是docker遠(yuǎn)程操控的默認(rèn)端口,通過(guò)這個(gè)端口可以直接對(duì)遠(yuǎn)程的docker daemon進(jìn)行操作;
任何能連通到這臺(tái)docker宿主機(jī)的的機(jī)器都可以隨意操作
這臺(tái)docker宿主機(jī)的docker daemon(docker run、docker ps、docker rm等等這些命令)
推薦進(jìn)行tls+CA證書配置進(jìn)行遠(yuǎn)程操控,這里不贅述,可以自行baidu google
這里為了方便使用,使用非安全的方式試驗(yàn)
配置docker,開放2375端口
Docker的2375端口是默認(rèn)關(guān)閉的,如果我們要使用到它,就需要進(jìn)行以下的配置:
1、安裝有docker的服務(wù)器,修改docker.service文件:
vi /etc/systemd/system/docker.service
具體文件所在地,得看你安裝docker的位置,如果不知道自己安裝在哪里了,執(zhí)行以下指令去查找:
sudo find / -name docker.service
2、修改docker.service
找到文件以下內(nèi)容:
ExecStart=/usr/bin/dockerd
修改為:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
3、重啟docker服務(wù)
systemctl daemon-reload
systemctl restart docker
2、針對(duì)maven 的 setting.xml 文件的修改
1、增加server配置,填充私服harbor的賬號(hào)密碼
<server>
<id>docker-hub</id>
<username>admin</username>
<password>Harbor12345</password>
</server>
2、其余配置 和 maven本身配置自己私服沒(méi)區(qū)別
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>docker-hub</id>
<username>admin</username>
<password>Harbor12345</password>
</server>
<server>
<id>nexus-central</id>
<username>admin</username>
<password>Aaaa1111</password>
</server>
<server>
<id>releases</id>
<username>admin</username>
<password>Aaaa1111</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>Aaaa1111</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-public</id>
<mirrorOf>*</mirrorOf>
<name>Nexus central</name>
<url>http://dev07.dfhamit.cn:8081/repository/maven-public</url>
</mirror>
<!--
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共倉(cāng)庫(kù)</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>-->
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://dev07.dfhamit.cn:8081/repository/maven-public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://dev07.dfhamit.cn:8081/repository/maven-public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>aliyun</id>
<repositories>
<repository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
<!-- <activeProfile>aliyun</activeProfile>-->
</activeProfiles>
</settings>
3、項(xiàng)目的pom文件,引入docker maven plugin 及相關(guān)配置
<!-- deploy 遠(yuǎn)程倉(cāng)庫(kù) ,id與maven setting.xml中對(duì)應(yīng)-->
<distributionManagement>
<repository>
<id>releases</id>
<name>dfham maven releases</name>
<url>http://10.118.193.117:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>dfham maven snapshots</name>
<url>http://10.118.193.117:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.3.RELEASE</version>
<configuration>
<executable>true</executable>
<!--springboot啟動(dòng)類目錄 -->
<mainClass>com.dfham.perfma.PerfmaApplication</mainClass>
<!-- MAIN-CLASS:PropertiesLauncher,lib 外置 -->
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<!--創(chuàng)建一個(gè)自動(dòng)可執(zhí)行的jar或war文件 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 跳過(guò)單元測(cè)試 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>cert</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
</plugin>
<!-- https://blog.csdn.net/fly_duck/article/details/124709727 -->
<!-- mvn package -Dmaven.test.skip=true && mvn docker:build -DpushImage -DdockerImageTags=$CI_COMMIT_REF_NAME -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<!-- 綁定docker build 與 push 至 mvn deploy 階段-->
<!-- 不綁定可以mvn命令行 https://www.jianshu.com/p/39881a8c5a1d
mvn clean package docker:build 只執(zhí)行 build 操作
mvn clean package docker:build -DpushImage 執(zhí)行 build 完成后 push 鏡像
mvn clean package docker:build -DpushImageTag 執(zhí)行 build 并 push 指定 tag 的鏡像
mvn clean package docker:build -DpushImageTags -DdockerImageTags=imageTag_1 -DdockerImageTags=imageTag_2 -->
<executions>
<execution>
<id>build-push</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 連接到 帶docker環(huán)境的linux服務(wù)器 編譯image -->
<dockerHost>http://localhost:2375</dockerHost>
<!-- push到 docker hub 開始 -->
<!-- serverId 這個(gè)是配置在maven的setting.xml中私服的登錄賬戶信息-->
<serverId>docker-hub</serverId>
<retryPushCount>1</retryPushCount>
<retryPushTimeout>2000</retryPushTimeout>
<registryUrl>http://10.118.192.228</registryUrl>
<!-- 格式:私有倉(cāng)庫(kù)/鏡像名稱:版本號(hào), 如果要執(zhí)行push操作, 那么鏡像名稱必須為私有倉(cāng)庫(kù)為前綴,不然無(wú)效。-->
<imageName>10.118.192.228/zhoushun/${project.artifactId}:3.0</imageName>
<!-- push到 docker hub 結(jié)束 -->
<!-- 指定tag版本 imageName中拼接版本號(hào)即可,此字段可不用-->
<!-- <imageTags>-->
<!-- <imageTag>3.0</imageTag>-->
<!-- </imageTags>-->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<!-- optionally overwrite tags every time image is built with docker:build -->
<!-- <forceTags>true</forceTags>-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
4、Dockerfile,默認(rèn)放在項(xiàng)目 src/main/docker 下,其他位置會(huì)copy多余的東西
FROM 10.118.192.228/zhoushun/openjdk:8-jre-alpine
WORKDIR /opt/perfma
COPY perfma-test-2.2.jar /opt/perfma
EXPOSE 8080
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk update
RUN apk add tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
CMD ["java","-jar","perfma-test-2.2.jar"]
# mvn clean package docker:build docker:push
# mvn package -Dmaven.test.skip=true && mvn docker:build -DpushImage -DdockerImageTags=$CI_COMMIT_REF_NAME
# docker run -it -d -p 8080:8080 --name perfma3.0 10.118.192.228/zhoushun/perfma-test:3.0
# docker exec -it perfma3.0 /bin/sh
# 刪除tag none 的鏡像
# docker image prune
5、運(yùn)行過(guò)程
?
參考文章:
Docker基于Centos7構(gòu)建JDK8鏡像 (qq.com)
(1569條消息) 【docker的那些事】Dockerfile構(gòu)建并推送到阿里云倉(cāng)庫(kù)_docker push 阿里云_陳橙橙丶的博客-CSDN博客
SpringBoot項(xiàng)目使用docker-maven-plugin插件構(gòu)建docker鏡像以及推送到docker hub或docker registry私服_OkidoGreen的博客-CSDN博客
(1570條消息) Spring?Boot配置docker-maven-plugin實(shí)現(xiàn)構(gòu)建與推送鏡像_spring-boot-maven-plugin_明天再去學(xué)習(xí)的博客-CSDN博客?Docker-通過(guò)docker-maven-plugin插件實(shí)現(xiàn)docker鏡像構(gòu)建并自動(dòng)發(fā)布到遠(yuǎn)程docker服務(wù)器 (bbsmax.com)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-728353.html
docker-maven-plugin - 簡(jiǎn)書 (jianshu.com)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-728353.html
到了這里,關(guān)于Spring Boot配置docker-maven-plugin實(shí)現(xiàn)構(gòu)建與推送鏡像(Dockerfile)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!