本地安装docker desktop、idea、jdk这些, 不详细说细节。从在idea中开发一个springboot基本的web工程之后开讲。
此时,一般有两种启动项目的方式,run Application.java或者以boot run方式启动。
(1)现在我们要做的事情就是打一个docker镜像,使web应用以docker容器的方式启动。
1.首先我们要给idea安装一个docker插件。
![](https://img.haomeiwen.com/i27194087/da5b79bf9e1c6452.png)
2.在添加新的configuration时,就会出现下图docker相关的选项。这里我们选择Dockerfile。
就是要自己创建一个dockerfile然后基于这个dockerfile构建镜像并运行容器。
注意下图中,我们配置了一个在构建镜像前执行的gradle build 的task,目的是为了首先build一个项目jar包,给dockerfile使用。
![](https://img.haomeiwen.com/i27194087/878e33cb40fc2d49.png)
3.工程目录下创建dockerfile文件
FROM openjdk:11MAINTAINER hobbs XXXX@qq.comADD build/libs/GrandWorldG-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-jar","app.jar"]EXPOSE 8080
4.run这个configuration就会构建镜像,推送到本地docker仓库,并运行一个容器。
![](https://img.haomeiwen.com/i27194087/497010c107acbfbb.png)
![](https://img.haomeiwen.com/i27194087/6e223de7b579231b.png)
在service下的Build log中能看见整个过程, 这个过程插件代替我们做了docker build和docker run这两个过程。然后启动容器中的web服务的过程会打印在,service下的Log中
![](https://img.haomeiwen.com/i27194087/efd1745c7d28a03f.png)
注意端口映射问题,否则请求接收不到。
5.到docker中查看我们构建的镜像和部署的容器。
![](https://img.haomeiwen.com/i27194087/e3dab595b9558d1d.png)
![](https://img.haomeiwen.com/i27194087/375f1ebec6199ee0.png)
(2)接下来介绍springboot的web项目如何连接到AWS上的数据库,原因很简单,服务实例以后是要部署在AWS上的。
1.登陆AWS,输入RDS,点击create database,选择mysql(这里据文档介绍,免费使用一年的数据库有好几种,但是我只发现mysql有Free tier的选项,所以我就拿它举例。)
![](https://img.haomeiwen.com/i27194087/c50f6c3df988f15f.png)
这里free tier是免费的意思,然后下面会需要你输入实例名字,用户名字密码等。经过鱼客服沟通,一般免费的数据库中,都是instance class选择db.t2.micro就是免费,所以不要改动这个。简单说就是不要私自改动free tier下的这些选项。
![](https://img.haomeiwen.com/i27194087/3a39db49c0c4fecc.png)
不过我第一次创建后发现外网访问不到,最后发现,需要选择重新建VPC group以及subnet group,并且public access选择yes,就解决了,我目前还说不明白为什么,网络知识小白啊,惭愧,以后研究明白我会在这里补充。亲测修改这两样不收费。
![](https://img.haomeiwen.com/i27194087/46f6c18a6dff7bc2.png)
创建数据库估计会花一段时间,等到status时available的时候,我们在本地尝试用客户端连接。
相关链接信息,在实例中均可找到。
然后我们就可以肆无忌惮的建表了。
最后修改springboot项目,数据库连接信息即可。
注意我使用的是druid连接池,发现偶尔项目启动时连接不上数据库的问题,这个网上说是有事以创建好的连接超时不可用了,可通过配置连接池参数解决,因时而发生,后续慢慢研究。不过只要db客户端能连接数据库,就表示数据库可用。
发现: 客户端执行sql语法错误时,会很长时间才提示错误信息,有一种连不上数据库的假象,但sql正确时很快,我想是因为aws rds要分析并回传错误信息吧。
(3)Ec2实例上部署服务到docker容器中
(4)Ec2实例上搭建jenkins实现CICD
在aws ec2上给root用户设置密码参照: https://www.cnblogs.com/520wife/p/7744015.html
网友评论