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