網站首頁 編程語言 正文
一、前置條件
linux下裝好docker并啟動
1.使用國內 daocloud 一鍵安裝命令
curl -sSL https://get.daocloud.io/docker | sh
2.啟動docker
systemctl start docker.service
二、部署方法
1.開放遠程部署端口
<1>修改 docker 的配置文件 /lib/systemd/system/docker.service
<2>在 ExecStart 配置項上增加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
<3>保存退出
<4>重新加載配置文件
systemctl daemon-reload
<5>重啟docker
systemctl restart docker.service
2.微服務pom文件新增插件配置
project標簽下加入如下配置
<build>
<finalName>app</finalName>
<plugins>
<!-- maven打包springboot必備依賴 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- DockerMaven插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<!-- imageName標簽內不可以有大寫字母 -->
<imageName>distribute-search/${project.artifactId}</imageName>
<!-- OpenJDK Java 11 + Maven 3.6 + Python 3.8 + pip 21 + node 16 + npm 7 + Gradle 6 -->
<baseImage>openkbs/jdk11-mvn-py3</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.6.128:2375</dockerHost>
<forceTags>true</forceTags>
</configuration>
</plugin>
</plugins>
</build>
ps:
imageName:打包后的docker鏡像名
baseImage:基礎鏡像,相當于 Dockerfile 中的 FROM
entryPoint:jar包啟動命令
targetPath:jar包上傳位置
directory:jar包上傳目錄,缺省時為 targetPath
include:jar包名
dockerHost:jar包上傳到哪臺機器
forceTags:是否覆蓋機器上的同名鏡像
3.修改application文件
將涉及到ip地址的配置修改為部署后的機器ip,沒有就跳過
4.打包上傳并創建鏡像
在微服務根目錄下執行此命令
mvn clean package -DskipTests docker:build
ps:-DskipTests 打包時跳過測試
打包成功
docker images 查看結果
5.啟動容器
# docker run --name <容器名> -p 80:80 -d <鏡像名>
docker run --name eureka -p 9999:9999 -d distribute-search/eureka-server
docker ps 查看結果
訪問微服務
三、總結
將Dockerfile寫在pom中方便項目管理,將微服務的 打包、上傳、鏡像創建操作 整合到一條命令中執行
原文鏈接:https://blog.csdn.net/weixin_43721000/article/details/124064973
相關推薦
- 2022-03-16 Android跟隨手指移動的控件demo實例_Android
- 2023-10-09 $nextTick的原理及作用
- 2022-06-14 C#獲取指定目錄下某種格式文件集并備份到指定文件夾_C#教程
- 2023-07-02 python中編寫config文件并及時更新的方法_python
- 2021-12-09 VS2017開發C語言出現“no_init_all“的解決辦法_C 語言
- 2023-02-15 Nginx如何根據前綴路徑轉發到不同的Flask服務_nginx
- 2023-05-20 linux?shell輸出換行簡單實例_linux shell
- 2022-12-14 深入了解Rust中trait的使用_Rust語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支