springboot項目一鍵部署到Linux服務(wù)器

springboot項目開發(fā)完成后,發(fā)布測試環(huán)境,需要經(jīng)過編譯,打包,上傳,啟動等步驟。
如果采用dockerfile-maven-plugin插件+shell腳本組合使用,就可以實現(xiàn)一鍵部署。

第1步、Linux安裝docker

網(wǎng)上教程很多:略過

第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項目的根目錄新建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ā)平臺的開發(fā)者使用

Windows開發(fā)者

在springboot項目的根目錄新建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項目的根目錄新建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步、鏡像驗證

登錄Linux服務(wù)器,執(zhí)行

docker images //查看docker鏡像

查看springboot項目鏡像,如果存在證明編譯,打包,上傳都成功了,接下來就是啟動鏡像了

docker run -itd --name 別名 -p 8080:8080 鏡像名稱 /bin/bash

鏡像啟動成功后,可以瀏覽器驗證了,如:http://Linux服務(wù)器IP:8080

最后來說說這個插件利弊

好處

1、配置簡單,環(huán)境要求簡單,只需要開發(fā)者安裝JDK、maven(配置jdk環(huán)境變量、maven環(huán)境變量)

壞處

1、存在安全風(fēng)險
2、發(fā)布不是通過git版本,而是開發(fā)者直接發(fā)布

分享到此結(jié)束,謝謝大家。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容