2022年找工作你必须要会的技能---看了就找工作领先别人一步
本文主要介绍如何使用Maven插件将SpringBoot应用打包为Docker镜像,并上传到私有镜像仓库Docker Registry的过程。
目录
Docker Registry
Docker Registry 2.0搭建
Docker开启远程API
使用Maven构建Docker镜像
在应用的pom.xml文件中添加docker-maven-plugin的依赖
修改application.yml,将localhost改为db
使用IDEA打包项目并构建镜像
运行mall-tiny-docker项目
启动mysql服务
启动mall-tiny-docker应用服务
Docker Registry 2.0搭建
docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
如果遇到镜像下载不下来的情况,需要修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值,然后重启docker服务:
{"registry-mirrors": ["https://registry.docker-cn.com"]
}
Docker开启远程API
用vim编辑器修改docker.service文件
vi /usr/lib/systemd/system/docker.service
需要修改的部分:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改后的部分:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
让Docker支持http上传镜像
echo '{ "insecure-registries":["192.168.3.101:5000"] }' > /etc/docker/daemon.json
修改配置后需要使用如下命令使配置生效
systemctl daemon-reload
重新启动Docker服务
systemctl stop docker
systemctl start docker
开启防火墙的Docker构建端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
使用Maven构建Docker镜像
该代码是在mall-tiny-02的基础上修改的。
在应用的pom.xml文件中添加docker-maven-plugin的依赖
<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.1.0</version><executions><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><imageName>mall-tiny/${project.artifactId}:${project.version}</imageName><dockerHost>http://192.168.3.101:2375</dockerHost><baseImage>java:8</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></configuration>
</plugin>
相关配置说明:
- executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;
- imageName:用于指定镜像名称,mall-tiny是仓库名称,
${project.artifactId}
为镜像名称,${project.version}
为仓库名称; - dockerHost:打包后上传到的docker服务器地址;
- baseImage:该应用所依赖的基础镜像,此处为java;
- entryPoint:docker容器启动时执行的命令;
- resources.resource.targetPath:将打包后的资源文件复制到该目录;
- resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;
- resources.resource.include:需要复制的文件,打包好的应用jar包。
修改application.yml,将localhost改为db
可以把docker中的容器看作独立的虚拟机,mall-tiny-docker访问localhost自然会访问不到mysql,docker容器之间可以通过指定好的服务名称db进行访问,至于db这个名称可以在运行mall-tiny-docker容器的时候指定。
spring:datasource:url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername: rootpassword: root
使用IDEA打包项目并构建镜像
注意:依赖的基础镜像需要先行下载,否则会出现构建镜像超时的情况,比如我本地并没有java8的镜像,就需要先把镜像pull下来,再用maven插件进行构建。
- 执行maven的package命令:
- 构建成功:
- 镜像仓库已有该镜像:
运行mall-tiny-docker项目
启动mysql服务
- 使用docker命令启动:
docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7
- 进入运行mysql的docker容器:
docker exec -it mysql /bin/bash
- 使用mysql命令打开客户端:
mysql -uroot -proot --default-character-set=utf8
- 修改root帐号的权限,使得任何ip都能访问:
grant all privileges on *.* to 'root'@'%'
- 创建mall数据库:
create database mall character set utf8
- 将mall.sql文件拷贝到mysql容器的/目录下:
docker cp /mydata/mall.sql mysql:/
- 将sql文件导入到数据库:
use mall; source /mall.sql;
启动mall-tiny-docker应用服务
- 使用docker命令启动(--link表示应用可以用db这个域名访问mysql服务):
docker run -p 8080:8080 --name mall-tiny-docker \ --link mysql:db \ -v /etc/localtime:/etc/localtime \ -v /mydata/app/mall-tiny-docker/logs:/var/logs \ -d mall-tiny/mall-tiny-docker:0.0.1-SNAPSHOT
Copy to clipboardErrorCopied - 开启8080端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
- 进行访问测试,地址:http://192.168.3.101:8080/swagger-ui.html
2022年找工作你必须要会的技能---看了就找工作领先别人一步相关推荐
- 2022完整版搜索引擎优化指南清单(你可以按步骤执行的SEO工作清单)
采自:埃克森数字营销 2022完整版搜索引擎优化指南清单(你可以按步骤执行的SEO工作清单) 相信很多SEO新手,都为如何开展或者审核自己的SEO工作而烦恼无从下手,现在在阅读这篇文章的你是否也深 ...
- 自学python怎么找工作-我是如何在自学编程9个月后找到工作的
昨天在我在国外网站 reddit 上看到一篇文章,作者分享了他 自学编程 9 个月后找到工作 的经历.文章不到一天就得到3千多赞,2百条回复.我看了下内容,非常中肯,其中有不少建议也是我在编程教室屡次 ...
- 2022集团企业邮箱电脑版怎么申请注册?外贸企业邮箱怎么找?
相信大家都用过邮箱,那你知道如何申请注册邮箱吗?特别是集团要用的电脑版企业邮箱,今天听朋友讲了一个发生在自己身上的趣事,顺便也给大家聊聊现在国内做好的邮箱有哪些. 周末闲来无事,约朋友喝咖啡,聊了聊自 ...
- java流程控制原理与方法_1.从本质上看,计算机控制系统的工作原理可归纳为三个步骤,以下不属这三个步骤的是 ( )。_学小易找答案...
[单选题]下列语句序列执行后, i 的值是( ); int i =1 ; switch ( i ) { case 1: i++; case 2: i+=2; } [单选题]对于 while语句而言, ...
- php关键词分词搜索 最多匹配的排在最前面_百度搜索引擎工作原理,做Seo的建议看一看 - 蜘蛛池博客...
原出处:蜘蛛池博客 原文链接:百度搜索引擎工作原理,做Seo的建议看一看 - 蜘蛛池博客 从事SEO(搜索引擎优化)工作的人可以比喻成搜索引擎的贴身管家,作为一名合格称职的管家必须要了解所服务对象的习 ...
- 工作占用了太多私人时间_职晓|如果工作占用了生活时间,我应不应该辞职?...
原标题:职晓|如果工作占用了生活时间,我应不应该辞职? 去年,<奇葩说>第四季总决赛就出了个辩题"生活已经被工作填满了,我该不该辞职?" 这个辩题很多网友都觉得深有同感 ...
- 靖江机器人怎么样_铁饭碗不保?靖江可能消失的12大职业!快看有你的工作没?...
原标题:铁饭碗不保?靖江可能消失的12大职业!快看有你的工作没? 无人飞机.无人驾驶.智能机器人.... 你能想象这些充满现代感的高科技 正在改变我们的生活吗? 在科技高速发展的今天 人工智能逐渐能够 ...
- 工作到了第七年,说说自己每天的工作(一)
先自己介绍一下自己的工作和个人信息 从事.NET开发已经三年多了,走上社会已经是第七个念头了,工作了那么多年,也需要对自己时常总结,回头看看也是很精彩的. 这是自己的博客: 杨恒连的博客 很久没有总结 ...
- 32岁了 学python 来的及吗-32岁的程序员去了国企工作, 晒出年薪, 网友: 我没看错吧...
原标题:32岁的程序员去了国企工作, 晒出年薪, 网友: 我没看错吧 现如今,相信很多朋友都非常羡慕那些互联网大公司的从业人员,因为他们动不动就年薪三四十万以上,但是这些互联网行业的从业人员也有自己的 ...
最新文章
- 巧用360加快您的开机速度
- 红帽启动apache服务器_CentOS6.5环境下搭建Apache httpd服务器
- mysql od函数_Mysql数学函数不求人
- ElasticSearch中distinct,count和group by的实现
- ssh登录命令(转)
- GeneralUpdate 2021.08.14更新公告
- 孙叫兽进阶之路之软件开发生命周期
- HDU2277_变色球
- win10 mysql 主从复制_win10 使用Docker配置mysql主从复制
- 大数据时代了解一些问题
- linux控制pwm输出个数,使用PWM控制来实现电压的变化控制
- 恒源云(Gpushare)_FAIR CVPR2022新作DVT是个啥?
- python数字雨代码_电影黑客帝国中代码雨如何实现?简单!用 Python 就能实现!...
- 前端实现在线预览pdf、word、xls、ppt等文件
- python爬取微信公众号的几种方法_一种爬取微信公众号信息的方法与流程
- 网站如何被百度蜘蛛快速抓取?
- LeetCode.868-二进制距离(Binary Gap)
- NLP工具——NLTK 安装及使用
- 1-1/2+1/3-1/4+.........+1/99-1/100
- 利用CSS浮动制作一个简易导航栏