docker-compose实现访问计数javaweb服务
需求
利用 docker compose 快速搭建一个可以统计访问次数的 java web服务.
环境准备
安装 docker.
- docker
- docker desktop (window | mac)
步骤
1 新建 java web 服务
spring boot 2.x
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
编写 Controller .
@RestController
public class AccessCounterController {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@GetMapping("/hello")
public String hello() {
Long counter = stringRedisTemplate.opsForValue().increment("accCounter");
return "页面访问的次数: " + counter;
}
}
项目配置
server.port=8080 spring.redis.host=redis spring.redis.port=6379
2 Dockerfile 和 docker-compose.yml
FROM java:8
COPY target/*.jar /app/acc-counter/app.jar
CMD ["--server.port=8080"]
WORKDIR /app/acc-counter
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
version: "3.9"
services:
acc-counter-app:
build: .
image: acc-counter-app
depends_on:
- redis
ports:
- "8080:8080"
redis:
image: "library/redis:alpine"
3 打包工程
mvn package
4 up
docker-compose up -d
第一次会自动先 build.
访问一下
坑
- 如果后续需要修改 Dockerfile 配置, 修改后, 要先显示
docker-compose build, 否则, 即使你使用up指令新的修改不生效, 因为它会识别到之前build的过, 不会重新build. - 注意环境版本, 我这里使用 java8+springboot 2.x+maven 3.x

