自己做文學(xué)網(wǎng)站賺錢嗎windows優(yōu)化大師收費(fèi)
文章目錄
- 1、新建SpringBootDemo項目并打包
- 2、使用Dockerfile打包(基礎(chǔ)用法)
- 進(jìn)一步maven源碼打包法
- 3、更進(jìn)一步(maven插件打包)
- docker-maven-plugin
- spring-boot-maven-plugin
- 前提條件
- 本地環(huán)境配置
- 項目環(huán)境配置maven插件
- 打包運(yùn)行
- 校驗鏡像倉庫結(jié)果
- 4、總結(jié)
1、新建SpringBootDemo項目并打包
一般情況下,我們通過執(zhí)行:
maven clean
maven compile
maven package
項目在本地會產(chǎn)生target目錄,下生成了一個項目jar包。
拿一個很簡單的demo作為例子:
頁面:
2、使用Dockerfile打包(基礎(chǔ)用法)
在與target同級,也就是項目根目錄下新建一個文件file命名為: Dockerfile
以下基本參數(shù):
FROM openjdk:8
# 指定可以被宿主機(jī)文件掛載目錄
VOLUME /opt/demo/
# 指定路徑
WORKDIR /opt/demo/
# 添加 springboot-web-demo-0.0.1-SNAPSHOT.jar 包到workdir 以 web.jar保存
ADD ["springboot-web-demo-0.0.1-SNAPSHOT.jar", "web.jar"]
EXPOSE 8090
ENTRYPOINT ["java", "-jar", "/web.jar"]
然后使用遠(yuǎn)程工具(我用的Xftp7),將jar包和Dockerfile文件拖到Linux服務(wù)器新建的目錄下:
命令行進(jìn)入該目錄下執(zhí)行鏡像制作:
docker build -t web:test . # 鏡像名:tag 當(dāng)下目錄
查看鏡像:
docker images
然后啟動運(yùn)行:
docker run -d -p 8090:8090 --name test web
映射端口到外界;
容器命名為test,鏡像為生成的web
瀏覽器訪問:
失敗。
(我項目端口是8080,暴露8090,不對應(yīng))
這里注意端口的映射問題!
- 項目application.yml 中端口 要和 EXPOSE 端口保持一致;
- 啟動容器時 -p 宿主機(jī)端口 : 容器端口,宿主機(jī)端口可以任意指定,容器端口即EXPOSE的端口。
否則容器可以正常啟動,但是端口未暴露,訪問時仍然訪問項目自己的端口(在linux下,外界訪問不到)
重新修改dockerfile并打包鏡像運(yùn)行后:
curl ip:port
瀏覽器訪問:
總結(jié):
1、本地maven 打包 + 創(chuàng)建Dockerfile文件
2、上傳到服務(wù)器下Docker環(huán)境
3、制作鏡像
4、運(yùn)行
可以看出,貌似并沒有為我們的項目部署帶來什么便利?僅僅這樣,無法體現(xiàn)docker的優(yōu)勢。
進(jìn)一步maven源碼打包法
在Linux docker環(huán)境下,可以安裝好git、maven,利用:
① git拉取倉庫代碼;
② mvn打包命令就可以去掉步驟一、二;
③ 制作鏡像
④ run運(yùn)行容器
但是仍然不夠簡單。
如果環(huán)境中沒有安裝maven,請手動安裝,腳本如下:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
# yum-config-manager --enable epel-apache-maven
// 安裝maven
# yum install -y apache-maven
1、上傳原碼到docker環(huán)境中(一般是git/svn直接拉取源碼)
2、maven打包
mvn clean package
生成的jar在同級target目錄下
3、執(zhí)行docker命令生成鏡像
dockerfile文件內(nèi)容
命令創(chuàng)建鏡像
3、更進(jìn)一步(maven插件打包)
即適用于生產(chǎn)環(huán)境下,IDEA代碼開發(fā)完畢,利用docker-maven插件直接一行命令編譯打包生成鏡像并推送到Docker主機(jī)環(huán)境下。
之后只需要Docker下運(yùn)行 run命令即可運(yùn)行項目。
docker-maven-plugin
里面集成了Docker客戶端,通過docker的api接口發(fā)送docker命令。
spring-boot-maven-plugin
這個是Spring Boot官方的插件,在2.x的某個版本(2.3.x)提供了Docker鏡像構(gòu)建能力。
下面,演示一個maven插件:docker-maven-plugin用法,來實現(xiàn)。
前提條件
1、需要我們windows上安裝docker服務(wù)
2、需要docker服務(wù)配置http倉庫接口,windows上docker服務(wù)配置如下(傳統(tǒng)配置模式無權(quán)限修改文件)
本地環(huán)境配置
1、windows上安裝docker-toolbox,傻瓜安裝即可。
2、打開Docker Quickstart Terminal終端,等待初始始化完成后。
3、輸入docker-machine env命令,返回docker服務(wù)的api接口和證書位置,如下:
4、輸入docker-machine ssh命令,進(jìn)入sh環(huán)境中,配置http倉庫路徑:
修改文件配置(當(dāng)前用戶是docker不是root,要sudo提升至root):
sudo vi /var/lib/boot2docker/profile
5、修改完成,保存。重啟docker服務(wù)
sudo /etc/init.d/docker restart
項目環(huán)境配置maven插件
在我們的工程pom中加入docker-maven-plugin插件的配置,如下:
1、其中,imageName配置鏡像的全路徑名,即指定私庫的名稱
2、dockerHost和dockerCertPath對應(yīng)配置上一步中docker的api和證書值
打包運(yùn)行
以idea為例,整個項目裝配完成,只需要操作maven的一二三步驟,即直接鏡像進(jìn)入倉庫,整個過程極為便利。
還可以省去多次點擊,直接一句mvn命令完成打包上傳:
mvn clean package docker:build -DpushImage
校驗鏡像倉庫結(jié)果
至此,我們的服務(wù)器環(huán)境,已經(jīng)可以直接運(yùn)行docker run 鏡像啟動容器了。
4、總結(jié)
寫完這篇,逛著逛著發(fā)現(xiàn)已經(jīng)有博主文章將這幾種方式都總結(jié)過了,我這里放上鏈接,感興趣的去看一下:
使用docker部署項目到linux(超詳細(xì))
另外,還可參考如下文章(隨意,可看可不看):
1、使用docker-maven-plugin插件將項目編譯為docker鏡像到遠(yuǎn)程linux服務(wù)器
2、idea docker插件打包上傳maven項目
3、maven進(jìn)行docker打包與推送