Java应用打包镜像并运行
编写一个简单的Spring Boot应用,使用redis统计访问次数,并打包镜像,运行到容器,点击链接获取代码
在服务器上创建redis容器的挂载目录如下:
[root@centos dockerdata]# tree
.
└── redis
├── data
│ ├── appendonly.aof
│ └── dump.rdb
└── redis.conf
vim redis.conf
# 开启AOF模式
appendonly yes
# 设置密码
requirepass redis
redis使用自定义配置文件启动
docker run -v /root/dockerdata/redis/redis.conf:/etc/redis/redis.conf \
-v /root/dockerdata/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest redis-server /etc/redis/redis.conf
打开idea
创建spring项目,依赖选择Spring Web和Spring Data Redis
创建controller/CounterController.java
package com.lt.javademo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CounterController {
@Autowired
StringRedisTemplate redisTemplate;
@GetMapping("/hello")
public String count(){
Long increment = redisTemplate.opsForValue().increment("count");
return "有" + increment + "人访问了这个页面";
}
}
在application.properties文件中
# 服务器ip
spring.redis.host=10.201.10.166
# redis密码
spring.redis.password=redis
直接运行,访问http://localhost:8080/hello可以显示
使用maven打包成jar
创建Dockerfile文件
FROM openjdk:8-jdk-slim
LABEL maintainer=lt
COPY target/*.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
将target目录以及Dockerfile文件放入服务器目录下
打包镜像
docker build -t java-demo:v1.0 .
查看镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java-demo v1.0 1a0b4260fec3 About a minute ago 323MB
redis latest 5d89766432d0 3 days ago 105MB
openjdk 8-jdk-slim 99b31c7569d0 4 days ago 296MB
运行
docker run -d -p 8080:8080 --name myjava-demo java-demo:v1.0
上传dockerhub仓库,就可以在别的机器拉取
# 登录docker hub
docker login
#给旧镜像起名
docker tag java-demo:v1.0 lt/java-demo:v1.0
# 推送到docker hub
docker push lt/java-demo:v1.0
# 别的机器
docker pull lt/java-demo:v1.0
# 别的机器运行
docker run -d -p 8080:8080 --name myjava-demo java-demo:v1.0
每个人都有潜在的能量,只是很容易被习惯所掩盖,被时间所迷离,被惰性所消磨~