您好,登錄后才能下訂單哦!
本篇內容介紹了“如何搭建基于docker環境搭建下springboot-mysql項目框架”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在云時代,開發者創建的應用必須要能很方便地在網絡上傳播,也就是說應用必須脫離底層物理硬件的顯示;同時必須是“任何時間任何地點”可獲取的。我們通常想要快速搭建一個項目框架,數據庫的環境搭建需要消耗一定的精力,為了與外界系統環境隔離,推薦使用docker可以使我們把更多精力放在業務處理上。
docker 17.12.0-ce
mysql鏡像版本 5.7
jdk 1.8
springboot 2.1.4.RELEASE
開發工具:IntelliJ IDEA
首先安裝好docker,安裝docker網上方法有很多,這里不再贅述。
搭建好docker環境之后,拉取mysql鏡像,如下:
docker pull mysql:5.7
如果不指定mysql版本,默認將會拉取最新latest版本。查看mysql鏡像是否安裝成功:
docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 f6509bac4980 11 days ago 373MB
運行容器,這里設置端口映射,并設置mysql的初始密碼,默認用戶名是root:
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
查看容器運行狀態:
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
容器運行正常,進入容器,創建一個數據庫test以及一張測試表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環境就搭建起來了。
https://github.com/vincentduan/mavenProject 下面的springboot-mysql項目
本次實戰的步驟如下:
創建springboot工程;
創建dao,使用JdbcTemplate連接mysql;
創建Service層的接口和實現;
創建mysql連接池配置;
創建controller,開發一個http服務接口,里面會調用service層的服務;
將springboot工程項目打包,使用docker封裝。
用IntelliJ IDEA創建一個springboot的web工程springboot-mysql,pom.xml內容如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.vincent</groupId> <artifactId>springboot-mysql</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.4.RELEASE</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.40</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.4.RELEASE</version> <configuration> <mainClass>cn.ac.iie.App</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project>
@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 { //測試簡單插入一條數據 void insert(int id); }
對應實現類,如下所示:
@Service public class OperatelogServiceImpl implements OperatelogService { @Autowired OperatelogDao operatelogDao; public void insert(int id) { operatelogDao.addOperatelog(id); } }
這個方法做的事情很簡單:插入一條數據
在application.properties中添加配置:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://docker所在服務器的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; } }
創建一個controller為OperatelogController,里面定義一個http接口,做的事情是調用Service層的服務,如下:
@RestController @RequestMapping("operatelog") public class OperatelogController { @Autowired OperatelogService operatelogService; @GetMapping("insert") public String insert(@RequestParam("id") int id) { operatelogService.queryOperateDesc(); return "SUCCESS"; } }
將這個springboot運行起來(pom.xml所在文件夾下執行mvn spring-boot:run);
在瀏覽器輸入:http://localhost:8080/operatelog/insert?id=1
瀏覽器中返回SUCCESS,檢查數據庫中多了一條數據;執行成功;
如果想將當前springboot也放入到docker容器中運行,也可以將當前項目打包成jar,并上傳到服務器中,新建一個目錄,然后新建Dockerfile文件
Dockerfile內容如下:
FROM java:8-alpine ADD test-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"]
在當前目錄下,構建鏡像,然后運行:
docker build -t . docker run -d -p 8088:8080 test
“如何搭建基于docker環境搭建下springboot-mysql項目框架”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。