Skip to content

Commit e659e65

Browse files
committed
add dockercompose-springboot-mysql-nginx
1 parent c87bcc5 commit e659e65

File tree

14 files changed

+239
-1
lines changed

14 files changed

+239
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Spring Boot使用的各种示例,以最简单、最实用为标准
1616
- [spring-boot-hello](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-hello):Spring Boot 2.0 Hello World 示例
1717
- [spring-boot-banner](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-banner):Spring Boot 定制 Banner 示例
1818
- [spring-boot-docker](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-banner):使用 Docker 部署 Spring Boot 示例
19-
19+
- [dockercompose-springboot-mysql-nginx](https://github.com/ityouknow/spring-boot-examples/tree/master/dockercompose-springboot-mysql-nginx) :Docker Compose + Spring Boot + Nginx + Mysql 示例
2020

2121
**参考文章**
2222

README_EN.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Spring Boot Examples, Use the simplest and most useful scene demo.
1515
- [spring-boot-hello](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-hello):Spring Boot 2.0 Hello World Demo
1616
- [spring-boot-banner](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-banner):Spring Boot Customized Banner
1717
- [spring-boot-docker](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-banner):Spring Boot with Docker
18+
- [dockercompose-springboot-mysql-nginx](https://github.com/ityouknow/spring-boot-examples/tree/master/dockercompose-springboot-mysql-nginx) :Docker Compose + Spring Boot + Nginx + Mysql example
19+
1820

1921
---
2022

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FROM maven:3.5-jdk-8
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.neo</groupId>
7+
<artifactId>dockercompose-springboot-mysql-nginx</artifactId>
8+
<version>1.0</version>
9+
<packaging>jar</packaging>
10+
11+
<name>dockercompose-springboot-mysql-nginx</name>
12+
<description>Demo project for Spring Boot</description>
13+
14+
<parent>
15+
<groupId>org.springframework.boot</groupId>
16+
<artifactId>spring-boot-starter-parent</artifactId>
17+
<version>2.0.0.RELEASE</version>
18+
</parent>
19+
20+
<properties>
21+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
22+
<java.version>1.8</java.version>
23+
</properties>
24+
25+
<dependencies>
26+
<dependency>
27+
<groupId>org.springframework.boot</groupId>
28+
<artifactId>spring-boot-starter-web</artifactId>
29+
</dependency>
30+
<dependency>
31+
<groupId>org.springframework.boot</groupId>
32+
<artifactId>spring-boot-starter-data-jpa</artifactId>
33+
</dependency>
34+
<dependency>
35+
<groupId>mysql</groupId>
36+
<artifactId>mysql-connector-java</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>org.springframework.boot</groupId>
40+
<artifactId>spring-boot-starter-test</artifactId>
41+
<scope>test</scope>
42+
</dependency>
43+
</dependencies>
44+
45+
<build>
46+
<defaultGoal>compile</defaultGoal>
47+
<plugins>
48+
<plugin>
49+
<groupId>org.springframework.boot</groupId>
50+
<artifactId>spring-boot-maven-plugin</artifactId>
51+
</plugin>
52+
</plugins>
53+
</build>
54+
55+
56+
</project>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.neo;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class ComposeApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(ComposeApplication.class, args);
11+
}
12+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.neo.controller;
2+
3+
import com.neo.entity.Visitor;
4+
import com.neo.repository.VisitorRepository;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.web.bind.annotation.RequestMapping;
7+
import org.springframework.web.bind.annotation.RestController;
8+
9+
import javax.servlet.http.HttpServletRequest;
10+
11+
@RestController
12+
public class VisitorController {
13+
14+
@Autowired
15+
private VisitorRepository repository;
16+
17+
@RequestMapping("/")
18+
public String index(HttpServletRequest request) {
19+
String ip=request.getRemoteAddr();
20+
Visitor visitor=repository.findByIp(ip);
21+
if(visitor==null){
22+
visitor=new Visitor();
23+
visitor.setIp(ip);
24+
visitor.setTimes(1);
25+
}else {
26+
visitor.setTimes(visitor.getTimes()+1);
27+
}
28+
repository.save(visitor);
29+
return "I have been seen ip "+visitor.getIp()+" "+visitor.getTimes()+" times.";
30+
}
31+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.neo.entity;
2+
3+
import javax.persistence.Column;
4+
import javax.persistence.Entity;
5+
import javax.persistence.GeneratedValue;
6+
import javax.persistence.Id;
7+
8+
@Entity
9+
public class Visitor {
10+
@Id
11+
@GeneratedValue
12+
private long id;
13+
@Column(nullable = false)
14+
private long times;
15+
@Column(nullable = false)
16+
private String ip;
17+
18+
public long getId() {
19+
return id;
20+
}
21+
22+
public void setId(long id) {
23+
this.id = id;
24+
}
25+
26+
public long getTimes() {
27+
return times;
28+
}
29+
30+
public void setTimes(long times) {
31+
this.times = times;
32+
}
33+
34+
public String getIp() {
35+
return ip;
36+
}
37+
38+
public void setIp(String ip) {
39+
this.ip = ip;
40+
}
41+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.neo.repository;
2+
3+
import com.neo.entity.Visitor;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface VisitorRepository extends JpaRepository<Visitor, Long> {
7+
Visitor findByIp(String ip);
8+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
spring.datasource.url=jdbc:mysql://localhost:3306/test
2+
spring.datasource.username=root
3+
spring.datasource.password=root
4+
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
spring.datasource.url=jdbc:mysql://mysql:3306/test
2+
spring.datasource.username=root
3+
spring.datasource.password=root
4+
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
spring.jpa.properties.hibernate.hbm2ddl.auto=update
2+
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
3+
spring.jpa.show-sql=true
4+
5+
spring.profiles.active=dev
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.neo;
2+
3+
import org.junit.Test;
4+
import org.junit.runner.RunWith;
5+
import org.springframework.boot.test.context.SpringBootTest;
6+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
7+
import org.springframework.test.context.junit4.SpringRunner;
8+
9+
@RunWith(SpringRunner.class)
10+
@SpringBootTest
11+
public class ComposeApplicationTests {
12+
13+
@Test
14+
public void contextLoads() {
15+
System.out.println("Hello Spring Boot Docker Compose!");
16+
}
17+
18+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
version: '3'
2+
services:
3+
nginx:
4+
container_name: v-nginx
5+
image: nginx:1.13
6+
restart: always
7+
ports:
8+
- 80:80
9+
- 443:443
10+
volumes:
11+
- ./nginx/conf.d:/etc/nginx/conf.d
12+
13+
mysql:
14+
container_name: v-mysql
15+
image: mysql/mysql-server:5.7
16+
environment:
17+
MYSQL_DATABASE: test
18+
MYSQL_ROOT_PASSWORD: root
19+
MYSQL_ROOT_HOST: '%'
20+
ports:
21+
- "3306:3306"
22+
restart: always
23+
24+
app:
25+
restart: always
26+
build: ./app
27+
working_dir: /app
28+
volumes:
29+
- ./app:/app
30+
- ~/.m2:/root/.m2
31+
expose:
32+
- "8080"
33+
depends_on:
34+
- nginx
35+
- mysql
36+
command: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
server {
2+
listen 80;
3+
charset utf-8;
4+
access_log off;
5+
6+
location / {
7+
proxy_pass http://app:8080;
8+
proxy_set_header Host $host:$server_port;
9+
proxy_set_header X-Forwarded-Host $server_name;
10+
proxy_set_header X-Real-IP $remote_addr;
11+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
12+
}
13+
14+
location /static {
15+
access_log off;
16+
expires 30d;
17+
18+
alias /app/static;
19+
}
20+
}

0 commit comments

Comments
 (0)