將本地SpringBoot應用docker化併發布到遠程服務器

怎麼將你本地docker應用推送到阿里雲docker鏡像上

很多初學docker得同學都知道docker得方便之處,幾個命令就可以搭建 mysql redis等應用,開發出來得SpringBoot項目也可以集成docker,但大都是在本機玩,今天得文章是教大家怎麼將docker鏡像發佈到阿里雲機器,實現本地編碼,生產運行得效果!

docker開啓遠程訪問接口

docker得環境搭建這裏就不重複了,還不會得可以自行去百度,也就幾個命令。

想要將本地鏡像推送到阿里雲得docker容器上,需要開啓遠程訪問權限

首先編輯docker的宿主機文件/lib/systemd/system/docker.service

vi /lib/systemd/system/docker.service

修改以ExecStart開頭的行,我這裏是騰訊雲服務器center os 7 ,修改後爲:

image

修改後保存文件,然後通知和重啓服務

systemctl daemon-reload
service docker restart

重啓完成以後可以在本機驗證,通過curl命令可以查看版本信息

curl http://localhost:2375/version

image

開啓白名單,讓客戶端能夠遠程訪問

我們在遠程機器開啓了端口,但是一般得雲服務器都需要設置端口白名單纔可以訪問,具體設置端口白名單這裏就不介紹了,設置完成以後,可以通過外網ip在windows機器瀏覽器進行訪問

image

本地docker項目發佈鏡像到遠程服務器

不以實戰爲目的得技術就是耍流氓,假設現在有個需求:作爲碼農得我開發了一個博客系統,現在開發完畢之後想部署到遠程服務器上去。

傳統部署方案

服務器上裝jdk,裝tomcat等—>項目打包->ftp上傳->啓動項目

docker部署方案

docker部署方案:項目集成docker插件->本地打包->項目構建鏡像到遠程機器->遠程服務器下載鏡像並啓動

通過兩套發佈流程比較我們就能知道各自得優劣了,這裏不再累贅,開始進行第二種方案實戰!

首先進行本地環境變量配置

image

如圖,配置DOCKER_HOST得遠程tcp連接。

爲了便於看完文章方便大家實戰,這裏使用得項目是一個開源得demo案例,項目地址爲:https://gitee.com/binary/weixin-java-miniapp-demo/

image

將項目導入到idea裏面,我們看看主要得docker相關配置

Dockerfile文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

maven依賴

  <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <dockerHost>http://遠程機器外網ip:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

使用idea自帶得docker插件進行構建鏡像

首先對項目進行打包

image

image
打包完成以後,點擊docker:build

image

構建成功後日志如下:

"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" "-Dmaven.multiModuleProjectDirectory=E:\my project\weixin-java-miniapp-demo" "-Dmaven.home=D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3" "-Dclassworlds.conf=D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\lib\idea_rt.jar=64265:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2018.3.5 com.spotify:docker-maven-plugin:1.0.0:build
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-boot-demo-for-wechat-miniapp 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- docker-maven-plugin:1.0.0:build (default-cli) @ weixin-java-miniapp-demo ---
[INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]
[INFO] Copying E:\my project\weixin-java-miniapp-demo\target\weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar -> E:\my project\weixin-java-miniapp-demo\target\docker\weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar
[INFO] Copying src\main\docker\Dockerfile -> E:\my project\weixin-java-miniapp-demo\target\docker\Dockerfile
[INFO] Building image wx-miniapp-demo/weixin-java-miniapp-demo
Step 1 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2 : VOLUME /tmp
 ---> Using cache
 ---> 84374a1095fd
Step 3 : ADD weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar app.jar
 ---> Using cache
 ---> cc04a43dd67d
Step 4 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> Using cache
 ---> 82cdfc704017
Successfully built 82cdfc704017
[INFO] Built wx-miniapp-demo/weixin-java-miniapp-demo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:50 min
[INFO] Finished at: 2019-11-12T16:43:15+08:00
[INFO] Final Memory: 30M/322M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

此時我們登錄遠程機器,查看鏡像是否發佈上來。

image
可以看到已經構建成鏡像並上傳到鏡像倉庫了,並且image id 都一致。
那麼此時已經大功告成了!鏡像都有了,直接一條命令構建容器並啓動就可以了!激動人心得時刻即將到來!

docker run -p 8181:8181 --name demo -d 82cdfc704017

正常啓動,查看項目允許日誌

docker logs -f demo

image

至此大功告成!鼓掌!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章