springboot項(xiàng)目開發(fā)完成后瞎领,發(fā)布測(cè)試環(huán)境,需要經(jīng)過(guò)編譯并炮,打包默刚,上傳,啟動(dòng)等步驟逃魄。
如果采用dockerfile-maven-plugin插件+shell腳本組合使用荤西,就可以實(shí)現(xiàn)一鍵部署。
第1步伍俘、Linux安裝docker
網(wǎng)上教程很多:略過(guò)
第2步邪锌、開啟docker遠(yuǎn)程API
vi /usr/lib/systemd/system/docker.service
在 ExecStart,后面添加:-H tcp://0.0.0.0:2375
修改完成后癌瘾,按esc輸入:wq退出
執(zhí)行命令
systemctl daemon-reload //重新加載配置文件
systemctl restart docker.service //重啟docker
第3步觅丰、添加dockerfile-maven-plugin插件
在pom.xml文件plugins里面添加
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<repository>prefix/${project.artifactId}</repository>
<tag>${project.version}</tag>
<contextDirectory>${project.basedir}</contextDirectory>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
第4步、編寫Dockerfile
在springboot項(xiàng)目的根目錄新建Dockerfile文件妨退,添加內(nèi)容如下:
FROM openjdk:8-jdk-alpine
WORKDIR /app/
VOLUME ["/tmp"]
EXPOSE 8080
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
第5步妇萄、編寫腳本
給不同開發(fā)平臺(tái)的開發(fā)者使用
Windows開發(fā)者
在springboot項(xiàng)目的根目錄新建auto-build.bat文件,添加內(nèi)容如下
@echo off
echo "auto build ready"
set DOCKER_HOST=tcp://Linux服務(wù)器IP:2375
echo "set docker host success"
mvn clean package -Dmaven.test.skip=true dockerfile:build
echo "auto build success"
MacOS開發(fā)者
在springboot項(xiàng)目的根目錄新建auto-build.sh文件咬荷,添加內(nèi)容如下
#!/bin/bash
echo "auto build ready"
DOCKER_HOST=tcp://Linux服務(wù)器IP:2375 mvn clean package -Dmaven.test.skip=true dockerfile:build
echo "auto build success"
腳本編寫完畢冠句,執(zhí)行腳本。
第6步幸乒、鏡像驗(yàn)證
登錄Linux服務(wù)器懦底,執(zhí)行
docker images //查看docker鏡像
查看springboot項(xiàng)目鏡像,如果存在證明編譯罕扎,打包聚唐,上傳都成功了丐重,接下來(lái)就是啟動(dòng)鏡像了
docker run -itd --name 別名 -p 8080:8080 鏡像名稱 /bin/bash
鏡像啟動(dòng)成功后,可以瀏覽器驗(yàn)證了杆查,如:http://Linux服務(wù)器IP:8080
最后來(lái)說(shuō)說(shuō)這個(gè)插件利弊
好處
1扮惦、配置簡(jiǎn)單,環(huán)境要求簡(jiǎn)單亲桦,只需要開發(fā)者安裝JDK径缅、maven(配置jdk環(huán)境變量、maven環(huán)境變量)
壞處
1烙肺、存在安全風(fēng)險(xiǎn)
2、發(fā)布不是通過(guò)git版本氧卧,而是開發(fā)者直接發(fā)布
分享到此結(jié)束桃笙,謝謝大家。