基于idea、docker、AWS构建本地开发环境并部署到AWS

2022-01-09  本文已影响0人  洪兴掌管一代

本地安装docker desktop、idea、jdk这些, 不详细说细节。从在idea中开发一个springboot基本的web工程之后开讲。

此时,一般有两种启动项目的方式,run Application.java或者以boot run方式启动。

(1)现在我们要做的事情就是打一个docker镜像,使web应用以docker容器的方式启动。

1.首先我们要给idea安装一个docker插件。

docker插件

2.在添加新的configuration时,就会出现下图docker相关的选项。这里我们选择Dockerfile。

就是要自己创建一个dockerfile然后基于这个dockerfile构建镜像并运行容器。

注意下图中,我们配置了一个在构建镜像前执行的gradle build 的task,目的是为了首先build一个项目jar包,给dockerfile使用。

镜像名字和容器名字可以随便取

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仓库,并运行一个容器。

在service下的Build log中能看见整个过程, 这个过程插件代替我们做了docker build和docker run这两个过程。然后启动容器中的web服务的过程会打印在,service下的Log中

如图所示,启动成功。

注意端口映射问题,否则请求接收不到。

5.到docker中查看我们构建的镜像和部署的容器。

(2)接下来介绍springboot的web项目如何连接到AWS上的数据库,原因很简单,服务实例以后是要部署在AWS上的。

1.登陆AWS,输入RDS,点击create database,选择mysql(这里据文档介绍,免费使用一年的数据库有好几种,但是我只发现mysql有Free tier的选项,所以我就拿它举例。)

这里free tier是免费的意思,然后下面会需要你输入实例名字,用户名字密码等。经过鱼客服沟通,一般免费的数据库中,都是instance class选择db.t2.micro就是免费,所以不要改动这个。简单说就是不要私自改动free tier下的这些选项。

不过我第一次创建后发现外网访问不到,最后发现,需要选择重新建VPC group以及subnet group,并且public access选择yes,就解决了,我目前还说不明白为什么,网络知识小白啊,惭愧,以后研究明白我会在这里补充。亲测修改这两样不收费。


创建数据库估计会花一段时间,等到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

上一篇下一篇

猜你喜欢

热点阅读