本篇內(nèi)容介紹了“如何搭建基于docker環(huán)境搭建下springboot-MySQL項(xiàng)目框架”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),蚌山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:蚌山等地區(qū)。蚌山做網(wǎng)站價(jià)格咨詢:028-86922220
在云時(shí)代,開發(fā)者創(chuàng)建的應(yīng)用必須要能很方便地在網(wǎng)絡(luò)上傳播,也就是說應(yīng)用必須脫離底層物理硬件的顯示;同時(shí)必須是“任何時(shí)間任何地點(diǎn)”可獲取的。我們通常想要快速搭建一個(gè)項(xiàng)目框架,數(shù)據(jù)庫(kù)的環(huán)境搭建需要消耗一定的精力,為了與外界系統(tǒng)環(huán)境隔離,推薦使用docker可以使我們把更多精力放在業(yè)務(wù)處理上。
docker 17.12.0-ce
mysql鏡像版本 5.7
jdk 1.8
springboot 2.1.4.RELEASE
開發(fā)工具:IntelliJ IDEA
首先安裝好docker,安裝docker網(wǎng)上方法有很多,這里不再贅述。
搭建好docker環(huán)境之后,拉取mysql鏡像,如下:
docker pull mysql:5.7
如果不指定mysql版本,默認(rèn)將會(huì)拉取最新latest版本。查看mysql鏡像是否安裝成功:
docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 f6509bac4980 11 days ago 373MB
運(yùn)行容器,這里設(shè)置端口映射,并設(shè)置mysql的初始密碼,默認(rèn)用戶名是root:
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
查看容器運(yùn)行狀態(tài):
docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e87ae06931c8 mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
容器運(yùn)行正常,進(jìn)入容器,創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)test以及一張測(cè)試表tbl_test:
docker exec -it mysql /bin/bash root@e87ae06931c8:/# mysql -uroot -p mysql> create database test; mysql> create table operatelog (id INT, userId varchar(255), operateDesc varchar(255));
這樣mysql環(huán)境就搭建起來(lái)了。
https://github.com/vincentduan/mavenProject 下面的springboot-mysql項(xiàng)目
本次實(shí)戰(zhàn)的步驟如下:
創(chuàng)建springboot工程;
創(chuàng)建dao,使用JdbcTemplate連接mysql;
創(chuàng)建Service層的接口和實(shí)現(xiàn);
創(chuàng)建mysql連接池配置;
創(chuàng)建controller,開發(fā)一個(gè)http服務(wù)接口,里面會(huì)調(diào)用service層的服務(wù);
將springboot工程項(xiàng)目打包,使用docker封裝。
用IntelliJ IDEA創(chuàng)建一個(gè)springboot的web工程springboot-mysql,pom.xml內(nèi)容如下:
4.0.0 com.vincent springboot-mysql 1.0-SNAPSHOT UTF-8 1.8 1.8 org.springframework.boot spring-boot-dependencies 2.1.4.RELEASE import pom org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-configuration-processor true mysql mysql-connector-java org.springframework.boot spring-boot-starter-jdbc com.alibaba druid 1.1.6 com.alibaba fastjson 1.2.40 org.springframework.boot spring-boot-maven-plugin 2.1.4.RELEASE cn.ac.iie.App repackage org.apache.maven.plugins maven-surefire-plugin true
@Repository public class OperatelogDao { @Autowired private JdbcTemplate jdbcTemplate; public void addOperatelog(int id) { String sql = "insert into operatelog (id) values (" + id + ")"; jdbcTemplate.execute(sql); } }
public interface OperatelogService { //測(cè)試簡(jiǎn)單插入一條數(shù)據(jù) void insert(int id); }
對(duì)應(yīng)實(shí)現(xiàn)類,如下所示:
@Service public class OperatelogServiceImpl implements OperatelogService { @Autowired OperatelogDao operatelogDao; public void insert(int id) { operatelogDao.addOperatelog(id); } }
這個(gè)方法做的事情很簡(jiǎn)單:插入一條數(shù)據(jù)
在application.properties中添加配置:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://docker所在服務(wù)器的IP地址:3306/test spring.datasource.username=root spring.datasource.password=123456
配置連接池,新建配置類,將配置文件中的屬性裝配到連接池中,如下所示:
@SpringBootConfiguration public class DBConfiguration { @Autowired private Environment environment; @Bean public DataSource createDataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl(environment.getProperty("spring.datasource.url")); druidDataSource.setUsername(environment.getProperty("spring.datasource.username")); druidDataSource.setPassword(environment.getProperty("spring.datasource.password")); druidDataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name")); return druidDataSource; } }
創(chuàng)建一個(gè)controller為OperatelogController,里面定義一個(gè)http接口,做的事情是調(diào)用Service層的服務(wù),如下:
@RestController @RequestMapping("operatelog") public class OperatelogController { @Autowired OperatelogService operatelogService; @GetMapping("insert") public String insert(@RequestParam("id") int id) { operatelogService.queryOperateDesc(); return "SUCCESS"; } }
將這個(gè)springboot運(yùn)行起來(lái)(pom.xml所在文件夾下執(zhí)行mvn spring-boot:run);
在瀏覽器輸入:http://localhost:8080/operatelog/insert?id=1
瀏覽器中返回SUCCESS,檢查數(shù)據(jù)庫(kù)中多了一條數(shù)據(jù);執(zhí)行成功;
如果想將當(dāng)前springboot也放入到docker容器中運(yùn)行,也可以將當(dāng)前項(xiàng)目打包成jar,并上傳到服務(wù)器中,新建一個(gè)目錄,然后新建Dockerfile文件
Dockerfile內(nèi)容如下:
FROM java:8-alpine ADD test-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"]
在當(dāng)前目錄下,構(gòu)建鏡像,然后運(yùn)行:
docker build -t . docker run -d -p 8088:8080 test
“如何搭建基于docker環(huán)境搭建下springboot-mysql項(xiàng)目框架”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!